使用缓冲流来读写文件(转)

一、通过BufferedReader和BufferedWriter来读写文件

     使用缓冲流的好处是,能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来。经常使用的是readLine()方法,表示一次读取一行数据。

 1 package org.example.io;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.File;
 6 import java.io.FileNotFoundException;
 7 import java.io.FileReader;
 8 import java.io.FileWriter;
 9 import java.io.IOException;
10 
11 public class TestBufferedWriter {
12 
13     public static void main(String[] args) throws Exception {
14         write();
15         read();
16     }
17 
18     /**
19      * DOC 读取信息.
20      * 
21      * @throws FileNotFoundException
22      * @throws IOException
23      */
24     private static void read() throws FileNotFoundException, IOException {
25         File file = new File("E:\a.txt");// 指定要读取的文件
26         // 获得该文件的缓冲输入流
27         BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
28         String line = "";// 用来保存每次读取一行的内容
29         while ((line = bufferedReader.readLine()) != null) {
30             System.out.println(line);
31         }
32         bufferedReader.close();// 关闭输入流
33     }
34 
35     /**
36      * DOC 写入信息.
37      * 
38      * @throws IOException
39      */
40     private static void write() throws IOException {
41         File file = new File("E:\a.txt");// 指定要写入的文件
42         if (!file.exists()) {// 如果文件不存在则创建
43             file.createNewFile();
44         }
45         // 获取该文件的缓冲输出流
46         BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
47         // 写入信息
48         bufferedWriter.write("你好世界");
49         bufferedWriter.newLine();// 表示换行
50         bufferedWriter.write("hello world");
51         bufferedWriter.flush();// 清空缓冲区
52         bufferedWriter.close();// 关闭输出流
53     }
54 
55 }

二、使用BufferedInputStream和BufferedOuputStream读写图片

使用方式和FileInputStrem和FileOutputStream基本一致:

 1 package org.example.io;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.FileOutputStream;
 8 
 9 public class TestBufferedString {
10 
11     public static void main(String[] args) throws Exception {
12         // 指定要读取文件的缓冲输入字节流
13         BufferedInputStream in = new BufferedInputStream(new FileInputStream("F:\test.jpg"));
14         File file = new File("E:\test.jpg");
15         if (file != null) {
16             file.createNewFile();
17         }
18         // 指定要写入文件的缓冲输出字节流
19         BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
20         byte[] bb = new byte[1024];// 用来存储每次读取到的字节数组
21         int n;// 每次读取到的字节数组的长度
22         while ((n = in.read(bb)) != -1) {
23             out.write(bb, 0, n);// 写入到输出流
24         }
25         out.close();// 关闭流
26         in.close();
27     }
28 
29 }