Размер файла переходит в ГБ при написании в нем некоторого текста
Для обучения чтению и записи файлов я написал метод, в котором я записываю некоторый результат в файл. При запуске программы размер файла переходит в ГБ, и мне приходится останавливать программу между ними, чего я не ожидал. Я не знаю, какую ошибку совершаю. Не могли бы вы, пожалуйста, указать на ошибку в нем или лучший способ сделать это.
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 ответ:
Значение
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); }