Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在文件中写入一些文本时,文件大小将变为GB_Java_Filewriter - Fatal编程技术网

Java 在文件中写入一些文本时,文件大小将变为GB

Java 在文件中写入一些文本时,文件大小将变为GB,java,filewriter,Java,Filewriter,为了学习文件读写,我写了一个方法,在这个方法中,我将一些结果写入一个文件。 在运行程序时,文件大小变成GB,我必须在两者之间停止程序,这是我没有预料到的。 我不确定我犯了什么错误。 你能指出其中的错误或更好的方法吗 public static void modOperation() { int i = Integer.MAX_VALUE; FileWriter fileWriter; try { fileWriter = new FileWriter("M

为了学习文件读写,我写了一个方法,在这个方法中,我将一些结果写入一个文件。 在运行程序时,文件大小变成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_值为2^31-1,等于2147483647。您正在编写文本result::加上每行上的一个数字,大约是20个字节

2147483647 x 20字节=42 TB

因此,您的代码肯定会导致编写千兆字节及以上的内容

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

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

Integer.MAX_值有多大?因此,Integer.MAX_值为2gb,假设每个字符只有1个字节,最多有16个字节,您可以进行计算,这不包括管理文件的操作系统开销,并假设每个字符有一个字节按设计工作。你的问题?