简单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 }
原文地址:https://www.cnblogs.com/tengqiuyu/p/6849097.html