文件大小在写入一些文本时会进入GB

时间:2015-06-12 02:55:14

标签: 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();
    }
}

1 个答案:

答案 0 :(得分:4)

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

2,147,483,647 x 20 bytes = 42 Terabytes

因此,您的代码肯定会导致Gigabytes(以及更高版本)被写入。

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

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