以下代碼讀取一堆.csv文件,然後將它們合併成一個.csv文件。我試圖system.out.println
...所有數據點都是正確的,但是當我嘗試使用PrintWriter
時,得到:如何克服PrintWriter的內存不足異常?
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
。
我試圖使用FileWriter
,但得到了同樣的錯誤。我應該如何糾正我的代碼?
public class CombineCsv {
public static void main(String[] args) throws IOException {
PrintWriter output = new PrintWriter("C:\\User\\result.csv");
final File file = new File("C:\\Users\\is");
int i = 0;
for (final File child: file.listFiles()) {
BufferedReader CSVFile = new BufferedReader(new FileReader("C:\\Users\\is\\"+child.getName()));
String dataRow = CSVFile.readLine();
while (dataRow != null) {
String[] dataArray = dataRow.split(",");
for (String item:dataArray) {
System.out.println(item + "\t");
output.append(item+","+child.getName().replaceAll(".csv", "")+",");
i++;
}
dataRow = CSVFile.readLine(); // Read next line of data.
} // Close the file once all data has been read.
CSVFile.close();
}
output.close();
System.out.println(i);
}
}
謝謝你的回覆。文件數量爲18.每個文件包含30,000條記錄(大約500 Kb) –
18個文件不應該導致問題。記錄的數量也不是問題。我的理論是,問題在於你正在閱讀的文件中有一個包含很長的一行。嘗試找出發生OOME時正在讀取的文件,然後將其縮小到該文件中的一行。 –
謝謝。我試圖使用java -xmx100m,它有幫助 –