Размер файла переходит в ГБ при написании в нем некоторого текста


Для обучения чтению и записи файлов я написал метод, в котором я записываю некоторый результат в файл. При запуске программы размер файла переходит в ГБ, и мне приходится останавливать программу между ними, чего я не ожидал. Я не знаю, какую ошибку совершаю. Не могли бы вы, пожалуйста, указать на ошибку в нем или лучший способ сделать это.

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 2

1 ответ:

Значение Integer.MAX_VALUE равно 2^31 - 1, что равно 2,147,483,647. Вы пишете текст " result :: " плюс число в каждой строке, которое составляет около 20 байт.

2,147,483,647 x 20 байт = 42 терабайта

Таким образом, ваш код, безусловно, вызовет гигабайты (и за их пределами), чтобы быть написанным.

Лучшее решение-дать петле верхнюю границу следующим образом:

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