java - 如何通过java从一个大文件中读取并写入一个新文件

标签 java

我正在做的是逐行读取一个文件,格式化每一行,然后写入一个新文件。但问题是该文件很大,接近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/

相关文章:

java - 我在递归地实现 String 的子字符串方法时遇到问题

java - 有多少对象适合垃圾收集器?

java - hashmap 在调用 containsKey() 时检查什么?

java - 调试/查看 GWT 生成的 java 代码的源代码

java - Java 中的快速失败迭代器

java - 我怎样才能得到一个数组的迭代器?

java - 密封类是否在 Java 中强制执行,如果是,如何执行?

java - 将字符附加到字符串不会产生预期的结果

java - JAVA 中 URL 的正则表达式字符串

java - 调整大小使事情出错