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:y1053419035@qq.com 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:y1053419035@qq.com 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:y1053419035@qq.com 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 }
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。
欢迎加入基础架构自动化运维:598432640,大数据SRE进阶之路:959042252,DevOps进阶之路:526991186