Java 内存堆不足 space
Java Out of memory heap space
实际上我有一个问题 java 内存堆不足 space 我的代码如下:
它适用于中型 csv 文件,另一方面它适用于大型 csv 文件,出现 java 内存不足错误。
非常感谢您的帮助:)
package routines;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.io.*;
import java.util.*;
import au.com.bytecode.opencsv.CSVReader;
import au.com.bytecode.opencsv.CSVWriter;
public class RemoveLineBreakFromCsvHelper {
public static void updateCSV (String fileToUpdate) throws IOException {
File inputFile = new File(fileToUpdate);
// Read existing file
CSVReader reader = new CSVReader(new FileReader(inputFile), ';');
List<String[]> csvBody = reader.readAll();
System.out.println("Read CSV File");
// get CSV row column and replace with by using row and column
for(int i=0; i<csvBody.size(); i++){
String[] strArray = csvBody.get(i);
for(int j=0; j<strArray.length; j++){
if(strArray[j].contains("\n")){ //String to be replaced
System.out.println("Remove Line Breaks");
csvBody.get(i)[j] = strArray[j].replace("\n".toString(), ". "); //Target replacement
}
}
}
reader.close();
// Write to CSV file which is open
CSVWriter writer = new CSVWriter(new FileWriter(inputFile), ';');
writer.writeAll(csvBody);
writer.flush();
writer.close();
}
}
List<String[]> csvBody = reader.readAll();
如果您正在读取一个大文件,这会读取大量数据。
相反,逐行读取,并逐行写入:
String[] strArray;
while ((strArray = reader.readNext()) != null) {
// ...
writer.writeNext(strArray);
}
由于您当前正在写入与正在读取的文件相同的文件,因此您需要先写入另一个文件,然后移动新文件以覆盖旧文件。
实际上我有一个问题 java 内存堆不足 space 我的代码如下:
它适用于中型 csv 文件,另一方面它适用于大型 csv 文件,出现 java 内存不足错误。
非常感谢您的帮助:)
package routines;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.io.*;
import java.util.*;
import au.com.bytecode.opencsv.CSVReader;
import au.com.bytecode.opencsv.CSVWriter;
public class RemoveLineBreakFromCsvHelper {
public static void updateCSV (String fileToUpdate) throws IOException {
File inputFile = new File(fileToUpdate);
// Read existing file
CSVReader reader = new CSVReader(new FileReader(inputFile), ';');
List<String[]> csvBody = reader.readAll();
System.out.println("Read CSV File");
// get CSV row column and replace with by using row and column
for(int i=0; i<csvBody.size(); i++){
String[] strArray = csvBody.get(i);
for(int j=0; j<strArray.length; j++){
if(strArray[j].contains("\n")){ //String to be replaced
System.out.println("Remove Line Breaks");
csvBody.get(i)[j] = strArray[j].replace("\n".toString(), ". "); //Target replacement
}
}
}
reader.close();
// Write to CSV file which is open
CSVWriter writer = new CSVWriter(new FileWriter(inputFile), ';');
writer.writeAll(csvBody);
writer.flush();
writer.close();
}
}
List<String[]> csvBody = reader.readAll();
如果您正在读取一个大文件,这会读取大量数据。
相反,逐行读取,并逐行写入:
String[] strArray;
while ((strArray = reader.readNext()) != null) {
// ...
writer.writeNext(strArray);
}
由于您当前正在写入与正在读取的文件相同的文件,因此您需要先写入另一个文件,然后移动新文件以覆盖旧文件。