我在寫一個讀取逗號分隔文本文件的Java應用程序,對數據執行一些計算並將更新後的數據寫入新文件。輸入文件包含大約5億行,所以我試圖儘可能擴展下面的內容,以便在運行時不會出現內存不足異常。有關如何改進下面的任何想法?縮放文本文件IO應用程序
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CsvTest {
public void readFile() {
BufferedReader br = null;
BufferedWriter out = null;
try {
br = new BufferedReader(new FileReader("C:\\input.txt"));
FileWriter fstream = new FileWriter("C:\\output.txt");
out = new BufferedWriter(fstream);
String line = null;
while ((line = br.readLine()) != null) {
out.write(line + "\r\n");
}
}
catch (FileNotFoundException ex) {
System.err.println("Error: " + ex.getMessage());
}
catch (IOException ex) {
System.err.println("Error: " + ex.getMessage());
}
finally {
try {
if (br != null) {
br.close();
}
if(out != null){
out.close();
}
}
catch (IOException ex) {
System.err.println("Error: " + ex.getMessage());
}
}
}
public static void main(String[] args) {
CsvTest test = new CsvTest();
test.readFile();
}
}
您是否收到內存不足錯誤或只是擔心它?如果速度很慢,它可以映射/減少。你看到了什麼具體問題? –
我很關心它,還沒有運行這個龐大的文件... – c12
我的應用程序需要3秒鐘的時間才能使用readFile()方法處理一個137MB的文件,該文件有200萬行。我認爲你的代碼看起來很好,除了需要分離職責(你應該具體的讀寫方法) –