BufferedReader 为带有默认缓冲的字符输入流,因为缓存是存在内存中,而一般的读取是从硬盘中读取,从内存中读取数据速度要比直接从硬盘中读取快出很多倍,所以BufferedReader 的效率要比普通字符流高出很多。
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("G:\\file\\a/test.txt"),"GBK"));
一般读写流的类都是成对出现,BufferedReader对应自然也有BufferedWriter,不过本次还是使用另一个输出流PrintWriter。
PrintWriter没有对应的输入流,作为处理流使用时,PrintWriter既可以封装OutputStream类型的字节流,还能够封装Writer类型的字符输出流并增强其功能,方法也从不抛出IOException
构造方法表:
PrintWriter(File file) 使用指定文件创建不具有自动行刷新的新 PrintWriter。 |
PrintWriter(File file, String csn) 创建具有指定文件和字符集且不带自动刷行新的新 PrintWriter。 |
PrintWriter(OutputStream out) 根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。 |
PrintWriter(OutputStream out, boolean autoFlush) 通过现有的 OutputStream 创建新的 PrintWriter。 |
PrintWriter(String fileName) 创建具有指定文件名称且不带自动行刷新的新 PrintWriter。 |
PrintWriter(String fileName, String csn) 创建具有指定文件名称和字符集且不带自动行刷新的新 PrintWriter。 |
PrintWriter(Writer out) 创建不带自动行刷新的新 PrintWriter。 |
PrintWriter(Writer out, boolean autoFlush) 创建新 PrintWriter。 |
PrintWriter out = new PrintWriter(new FileOutputStream("G:\\file\\b/test.txt"));
String str = null;
while (true){
str = in.readLine();
if(str == null){
break;
}
out.println(str);
out.flush();
}
out.close();
in.close();
BufferedReader 直接用字符串接受读取到的数据,当它==null时就是文件读取完成。
而PrintWriter使用print()方法把数据打印到文件中,每次打印后需要手动flush()来刷新缓存区。
同样,在读写完成之后,需要手动关闭流来释放资源。
1435

被折叠的 条评论
为什么被折叠?



