簡單Java程序向實用程序的過度:二進制文件的讀寫
File I/O中常見的文件讀寫:
1.字節流讀寫文本文件
FileInputStream;
FileOutputStream;
2.字符流讀寫文本文件
FileReader;
FileWriter;
BufferedReader;
BufferedWriter;
3.二進制讀寫文件
DataInputStream;
DataOutputStream;
這裏重點介紹二進制文件的讀寫:
一、使用字節流類DataInputStream讀寫二進制文件
DataInputStream類是FileInputstream的子類,它是FileInputStream類的擴展。
利用DataInputStream類讀取二進制文件要使用到FileInputStream類。
具體操作步驟:
1)引入相關的類
2)構造一個數據流對象
3)利用數據輸入流類的方法讀取二進制文件的數據
dis.read();//讀取字節數據
4)關閉數據輸入流
dis.close();//關閉數據輸入流
二、使用字節流類DataOutputStream寫二進制文件
DataOutputStream類是FileOutputStream的子類,需要用到FileOutputStream類。
具體操作步驟:
1)引入相關的類
2)構造一個數據輸出流對象
3)利用數據輸出流類的方法寫二進制文件的數據
out.write(1);//將指定字節數據寫入二進制文件
4)關閉數據輸出流
out.close();
三、編寫一個Java程序讀取windows目錄下的win.ini文件,並輸出其內容
1 import java.io.DataInputStream; 2 import java.io.FileInputStream; 3 import java.io.FileNotFoundException; 4 import java.io.IOException; 5 6 /** 7 * 編寫一個Java程序讀取windows目錄下的win.ini文件,並輸出其內容 8 * @author Administrator 9 * 10 */ 11 public class Test041 { 12 13 public static void main(String[] args) {14 DataInputStream dis = null; 15 try { 16 /*創建二進制輸入流*/ 17 dis = new DataInputStream(new FileInputStream("C:\\windows\\win.ini")); 18 19 /*循環讀取並輸出信息*/ 20 int temp; 21 while((temp=dis.read())!=-1){ 22 System.out.print((char)temp); 23 } 24 } catch (FileNotFoundException e) { 25 e.printStackTrace(); 26 } catch (IOException e) { 27 e.printStackTrace(); 28 } 29 finally{ 30 if (dis!=null) { 31 try { 32 dis.close(); 33 } catch (IOException e) { 34 e.printStackTrace(); 35 } 36 } 37 } 38 39 } 40 41 }
四、DataInputStream類與DataOutputStream類搭配使用,可以按照與平臺無關的方式從流中讀取基本數據類型的數據
1.DataInputStream的readUTF()方法能讀取采用utf-8字符編碼的字符串;
2.DataOutputStream的writeUTF()方法能寫入采用utf-8字符編碼的字符串;
test:復制圖片
1 import java.io.DataInputStream; 2 import java.io.DataOutputStream; 3 import java.io.FileInputStream; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 7 /** 8 * 復制圖片(二進制字節流) 9 * @author Administrator 10 * 11 */ 12 public class Test004 { 13 14 public static void main(String[] args) { 15 FileInputStream fis = null; 16 FileOutputStream fos = null; 17 DataInputStream dis = null; 18 DataOutputStream dos = null; 19 try { 20 //創建輸入流 21 fis = new FileInputStream("D:\\tengyicheng\\timg.jpg"); 22 dis = new DataInputStream(fis); 23 //創建輸出流 24 fos = new FileOutputStream("D:\\tengyicheng\\myFile\\timg.jpg"); 25 dos = new DataOutputStream(fos); 26 //循環讀取錄入 27 int temp; 28 while((temp = dis.read())!=-1){ 29 dos.write(temp); 30 } 31 } catch (IOException e) { 32 e.printStackTrace(); 33 } 34 finally{ 35 try { 36 if (fis!=null) { 37 fis.close(); 38 } 39 if (fos!=null) { 40 fos.close(); 41 } 42 if (dis!=null) { 43 dis.close(); 44 } 45 if (dos!=null) { 46 dos.close(); 47 } 48 } catch (IOException e) { 49 e.printStackTrace(); 50 } 51 } 52 53 } 54 55 }
簡單Java程序向實用程序的過度:二進制文件的讀寫