似乎在Java中有不同的方法来读写文件数据。
我想从文件中读取ASCII数据,可能的方法有哪些,它们之间有什么区别?
似乎在Java中有不同的方法来读写文件数据。
我想从文件中读取ASCII数据,可能的方法有哪些,它们之间有什么区别?
我编写的这段代码对于非常大的文件来说速度要快得多:
public String readDoc(File f) {
String text = "";
int read, N = 1024 * 1024;
char[] buffer = new char[N];
try {
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
while(true) {
read = br.read(buffer, 0, N);
text += new String(buffer, 0, read);
if(read < N) {
break;
}
}
} catch(Exception ex) {
ex.printStackTrace();
}
return text;
}
+=
会使任务的复杂度从线性变成二次方!对于几 MB 的文件,这个过程将开始变得非常缓慢。要解决这个问题,你可以把文本块保存在一个 list<string> 中,或者使用上述的 StringBuilder。 - kritzikratziStringBuilder
慢得多,这就是为什么有StringBuilder
存在的原因,而一个简单的测试很容易证明这一点。您还需要解决此代码无法正确处理流结束的事实,或者说根本没有处理。 - user207421