標籤:程式 font mini 檔案 nbsp 構造 port 關閉 nal
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類搭配使用,可以按照與平台無關的方式從流中讀取基礎資料型別 (Elementary Data Type)的資料
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 Administrator10 *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程式向公用程式的過度:二進位檔案的讀寫