黑马程序员技术交流社区
标题:
请问FileReader和BufferedReader的区别
[打印本页]
作者:
fengjietian
时间:
2015-7-31 20:12
标题:
请问FileReader和BufferedReader的区别
本帖最后由 fengjietian 于 2015-7-31 20:13 编辑
java.io 中, BufferedReader除了多出一个 readLine()函数, 还有什么区别吗? 好像FileReader也可以把输入流读取到一个缓冲区中间。
import java.io.*;
public class InputOutPutDemo {
static String srcPath = "src/InputOutPutDemo.java";
static String destPath = "C:/testDemo.java";
public static void main(String[] args) {
copyFile3();
}
//BufferedReader BufferedWriter
static void copyFile2() {
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader(srcPath));
bw = new BufferedWriter(new FileWriter(destPath));
char[] buf = new char[1024];
int num = 0;
while((num = br.read(buf)) != -1) {
bw.write(buf, 0, num);
bw.flush();
}
} catch(IOException e) {
e.printStackTrace();
} finally {
try {
if(br != null)
br.close();
if(bw != null)
bw.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
//FileReader FileWriter
static void copyFile() {
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader(srcPath);
fw = new FileWriter(destPath);
char[] buf = new char[10];
int num = 0;
while((num = fr.read(buf)) != -1) {
fw.write(buf, 0, num);
fw.flush();
}
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
} finally {
try {
if(fr != null)
fr.close();
if(fw != null)
fw.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
复制代码
就像上面的代码, FileReader不是也用了缓冲区buf吗, 为什么还要另外有一个类BufferedReader?
作者:
rxtm
时间:
2015-7-31 20:46
即使用了缓冲区,他俩的基本原理都一个一个字节的读入,这个缓冲跟那个缓冲不是一个缓冲。应该是这样
作者:
亦如梦幻泡影
时间:
2015-7-31 22:00
FileReader是字符输入流,BufferedReader是高效字符输入流,听名字就知道BufferedReader的速度更快啊,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2