为了学习文件读写,我编写了一种方法,将一些结果写入文件。 运行程序时,文件大小达到 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 TB
因此,您的代码肯定会导致写入千兆字节(甚至更多)。
更好的解决方案是为循环指定一个上限,如下所示:
while (i < 100000) {
boolean result = ((i-- % 3) == 0);
fileWriter.write(" result :: " + result);
}
关于java - 在其中写入一些文本时,文件大小将变为 GB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30794642/