让我们考虑一下这种情况:我正在读取一个文件,然后稍微调整每一行,然后将数据存储在一个新文件中。现在,我尝试了两种方法来做到这一点:
将数据存储在String中,然后像下面这样将其写入目标文件的末尾:
InputStream ips = new FileInputStream(file);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
PrintWriter desFile = new PrintWriter(targetFilePath);
String data = "";
while ((line = br.readLine()) != null) {
if (line.contains("_Stop_"))
continue;
String[] s = line.split(";");
String newLine = s[2];
for (int i = 3; i < s.length; i++) {
newLine += "," + s[i];
}
data+=newLine+"\n";
}
desFile.write(data);
desFile.close();
br.close();
在while循环中,直接使用printWriter的println()方法,如下所示:
while ((line = br.readLine()) != null) {
if (line.contains("_Stop_"))
continue;
String[] s = line.split(";");
String newLine = s[2];
for (int i = 3; i < s.length; i++) {
newLine += "," + s[i];
}
desFile.println(newLine);
}
desFile.close();
br.close();
第二个进程比第一个更快。现在,我的问题是,在这两个过程中发生了什么差异,以至于执行时间差异如此之大?
附加到您的字符串将:
您对每一行重复此过程,这意味着对于N行输出,您需要复制O(N ^ 2)个字节。
同时,写给您的PrintWriter将:
这意味着对于N行输出,您仅复制O(N)个字节。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句