无法写入文件

时间:2012-02-10 19:15:40

标签: java

我正在尝试创建一个文件并继续追加到该文件中。我的代码文件正在创建,但它没有在该文件中附加任何内容。不知道为什么?任何人都可以建议我做错了什么..

更新代码: -

        File file =new File("D://GeoData1.txt");

    BufferedWriter out = new BufferedWriter(new FileWriter(file, true));


    int j = -1;
    while(true) {           
        j++;
        String ipAddress = generateIPAddress(j);
        try {
            out.write(ipAddress);
            System.out.println(ipAddress);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                    out.flush();
                    out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

6 个答案:

答案 0 :(得分:3)

你应该关闭文件或刷新缓冲区。

答案 1 :(得分:2)

你是closing作家吗?

finally {
   bufferWritter.close();
}

<强>更新

如果您使用的是Java 7,请尝试以下操作:

final int NUMBER_OF_IPS_TO_APPEND = 5000; // or whatever size
Charset charset = Charset.defaultCharset();
Path file = Paths.get("myfile.txt");

try (BufferedWriter writer = Files.newBufferedWriter(file, charset,
                StandardOpenOption.CREATE,
                StandardOpenOption.APPEND)) {
    for (int i = 1; i <= NUMBER_OF_IPS_TO_APPEND; i++) {
        String ip = generateIPAddress(i);
        System.out.printf("Generated ip: %s\n", ip);
        writer.append(ip + "\n");
    }
} catch (IOException x) {
    System.err.format("IOException: %s\n", x);
}

代码改编自The Java Tutorials

检查IPS是否正在打印到控制台和文件。

Fully working code,其模拟实现为generateIPAddress。每次执行时,它会向myfile.txt附加5000个随机IPv4地址(不检查有效性)。

答案 2 :(得分:1)

我会尝试将文件编写器传递给文件对象并删除.getName()

BufferedWriter out = new BufferedWriter(new FileWriter(file, true));

答案 3 :(得分:1)

你有while(true)的无限循环。您应该使用statemant创建一个断点,或者使用&#34;而#34;像while一样循环(i&lt; xy)......

答案 4 :(得分:0)

首先,循环永无止境。你应该至少让它在某个时刻停止。 此外,您需要关闭该文件以释放任何内存。希望它有所帮助!

- edit-- 要关闭文件,

file.close();

答案 5 :(得分:0)

如果要在程序运行期间查看对文件所做的更改,则需要刷新编写器。请注意,它迟早会自动刷新。您在文本编辑器中看不到更改的原因取决于您的编辑器。例如,它无法打开这么大的文件(请注意,在您的程序中,您将非常快速地将字符追加到此文件中)。检查文件的大小。如果尺寸增加则可行。

如果您想监控文件,可以使用 tail 等工具。