簡單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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM