我正在做的是逐行读取一个文件,格式化每一行,然后写入一个新文件。但问题是该文件很大,接近178 MB。 但总是收到错误消息:IO控制台更新程序错误,java堆空间。这是我的代码:
public class fileFormat {
public static void main(String[] args) throws IOException{
String strLine;
FileInputStream fstream = new FileInputStream("train_final.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(fstream));
BufferedWriter writer = new BufferedWriter(new FileWriter("newOUTPUT.txt"));
while((strLine = reader.readLine()) != null){
List<String> numberBox = new ArrayList<String>();
StringTokenizer st = new StringTokenizer(strLine);
while(st.hasMoreTokens()){
numberBox.add(st.nextToken());
}
for (int i=1; i< numberBox.size(); i++){
String head = numberBox.get(0);
String tail = numberBox.get(i);
String line = head + " "+tail ;
System.out.println(line);
writer.write(line);
writer.newLine();
}
numberBox.clear();
}
reader.close();
writer.close();
}
}
如何避免出现此错误消息?此外,我还设置了VM首选项:-xms1024m
最佳答案
删除该行
System.out.println(line);
这是一个针对失败的控制台更新程序的解决方法,否则会耗尽内存。
关于java - 如何通过java从一个大文件中读取并写入一个新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18630450/