在其中写入一些文本时,文件大小进入 GB
Size of file goes into GB's on writing some text in it
为了学习文件读写,我编写了一种方法,将一些结果写入文件。
在 运行 上,程序的文件大小变成了 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 太字节
因此您的代码肯定会导致写入千兆字节(甚至更多)。
更好的解决方案是像这样给循环一个上限:
while (i < 100000) {
boolean result = ((i-- % 3) == 0);
fileWriter.write(" result :: " + result);
}
为了学习文件读写,我编写了一种方法,将一些结果写入文件。 在 运行 上,程序的文件大小变成了 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 太字节
因此您的代码肯定会导致写入千兆字节(甚至更多)。
更好的解决方案是像这样给循环一个上限:
while (i < 100000) {
boolean result = ((i-- % 3) == 0);
fileWriter.write(" result :: " + result);
}