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 }