有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

文件的java大小在写入一些文本时会变成GB

为了学习文件读写,我写了一个方法,在这个方法中,我将一些结果写入一个文件。 在运行程序时,文件大小变成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) 个答案

  1. # 1 楼答案

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

    2147483647 x 20字节=42 TB

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

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

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