java - 在其中写入一些文本时,文件大小将变为 GB

标签 java filewriter

为了学习文件读写,我编写了一种方法,将一些结果写入文件。 运行程序时,文件大小达到 GB,我必须在中间停止程序,这是我没想到的。 我不确定我犯了什么错误。 您能指出其中的错误或更好的方法吗?

public static void modOperation() {
    int i = Integer.MAX_VALUE;
    FileWriter fileWriter;
    try {
        fileWriter = new FileWriter("Mod.txt");
        while (i > 0) {
            boolean result = ((i-- % 3) == 0);
            fileWriter.write(" result :: " + result);
        }
        fileWriter.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

最佳答案

Integer.MAX_VALUE 为 2^31 - 1,等于 2,147,483,647。您正在编写文本 "result::" 加上每行一个数字,大约 20 个字节。

2,147,483,647 x 20 字节 = 42 TB

因此,您的代码肯定会导致写入千兆字节(甚至更多)。

更好的解决方案是为循环指定一个上限,如下所示:

while (i < 100000) {
    boolean result = ((i-- % 3) == 0);
    fileWriter.write(" result :: " + result);
}

关于java - 在其中写入一些文本时,文件大小将变为 GB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30794642/

相关文章:

java - 想让ThreadPoolExecutor立即执行任务

java - 字符串池是否接受局部变量?

java - 使用java将数据从一个csv文件复制到另一个csv文件

java - 是安卓:showAsAction deprecated?

java - 如何将项目添加到同一父类(super class)型的通用列表中?

java - 使用java更新文本文件

java - 有没有与列表一起使用的函数来跳转下一行?

java - 无法在 Android 中写入文件,只读文件系统

java - 如何在java中将字符附加到某个文件 "string"

java - java中统计单词出现的次数