Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)

            Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)

                                    作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.字符缓冲流

  字符缓冲流根据流的方向,共有2个:

      1>. 写入数据到流中,字节缓冲输出流 BufferedReader

      2>.读取流中的数据,字节缓冲输入流 BufferedWriter

  完成文本数据的高效的写入与读取操作。

 

二.字符输出缓冲流(BufferedWriter

 BufferedWriter有一个特有的方法就是newLine,可以解决Windows和Linux换行符不同的困扰。

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.BufferedWriter;
10 import java.io.FileWriter;
11 import java.io.IOException;
12 
13 public class BufferedWriteDemo {
14     public static void main(String[] args) throws IOException {
15         //创建字符输出流,封装文件
16         FileWriter fw = new FileWriter("yinzhengjie.txt");
17         BufferedWriter bfw = new BufferedWriter(fw);
18         //写入一个字符
19         bfw.write(97);
20         //写入换行符,不论你的操作系统是Linux还是Windows它会自动帮你处理换行符号
21         bfw.newLine();
22         bfw.flush();
23         //写入一个字符数组
24         bfw.write("尹正杰".toCharArray());
25         //写入换行符,不论你的操作系统是Linux还是Windows它会自动帮你处理换行符号
26         bfw.newLine();
27         bfw.flush();
28         //写入字符串
29         bfw.write("yinzhengjie");
30         //写入换行符,不论你的操作系统是Linux还是Windows它会自动帮你处理换行符号
31         bfw.newLine();
32         bfw.flush();
33         bfw.close();
34         
35     }
36 }

 三.字符缓冲输入流(BufferedReader)

 

  从字符输入流中读取文本,缓冲各个字符,从而实现字符,数组和行的高效读取。

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.BufferedReader;
10 import java.io.FileReader;
11 import java.io.IOException;
12 
13 public class BufferedReaderDemo {
14     public static void main(String[] args) throws IOException {
15         //创建字符输入流缓冲流对象,构造方法传递字符输入流,包装数据源文件
16         BufferedReader bfr = new BufferedReader(new FileReader("yinzhengjie.txt"));
17         //调用缓冲流的方法readLine()读取文本行
18         //循环读取文本行,结束条件readLine()返回null。
19         String line;
20         //定义以后计数器,用来定义行号,当然BufferedReader也有一个子类LineNumberReader也可以实现换行号的读取。
21         int lineNumber = 0;
22         while( ( line = bfr.readLine()) != null) {
23             lineNumber++;
24             //此时的line本身是没有换行符号的,因为换行符已经被readLine给脱掉了,因此我们应该调用println。
25             System.out.println(lineNumber+"  "+line);
26         }
27         bfr.close();
28     }
29 }

四.字符缓冲区流复制文本文件

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:[email protected]
 5 */
 6 
 7 package cn.org.yinzhengjie.note5;
 8 
 9 import java.io.BufferedReader;
10 import java.io.BufferedWriter;
11 import java.io.FileReader;
12 import java.io.FileWriter;
13 import java.io.IOException;
14 
15 public class CopyFile {
16     public static void main(String[] args) throws IOException {
17         BufferedReader bfr = new BufferedReader(new FileReader("yinzhengjie.txt"));
18         BufferedWriter bfw = new BufferedWriter(new FileWriter("yinzhengjie.backup"));
19         
20         //读取文本行,读一行,写一行,写换行
21         String line;    //默认为null
22         while( (line = bfr.readLine()) != null ) {
23             bfw.write(line);
24             bfw.newLine();
25             bfw.flush();
26         }
27         bfw.close();
28         bfr.close();
29     }
30 }

猜你喜欢

转载自www.cnblogs.com/yinzhengjie/p/8982743.html