Java 无法写入文件

Java 无法写入文件,java,Java,我正在尝试创建一个文件,并继续添加到该文件中。在我的代码中,正在创建文件,但它没有在该文件中附加任何内容。不知道为什么?有人能告诉我我做错了什么吗 更新代码:- File file =new File("D://GeoData1.txt"); BufferedWriter out = new BufferedWriter(new FileWriter(file, true)); int j = -1; while(true) {

我正在尝试创建一个文件,并继续添加到该文件中。在我的代码中,正在创建文件,但它没有在该文件中附加任何内容。不知道为什么?有人能告诉我我做错了什么吗

更新代码:-

        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();
            }
        }

    }

我想您应该关闭文件或刷新缓冲区。

首先,循环是永无止境的。你至少应该让它停下来。 此外,您需要关闭该文件以释放所有内存。希望有帮助

--编辑-- 要关闭文件,其

file.close();
你是作家吗

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);
}
IPS到APPEND的最终整数=5000;//或者任何尺寸的
Charset Charset=Charset.defaultCharset();
Path file=Path.get(“myfile.txt”);
try(BufferedWriter=Files.newBufferedWriter(file,charset,
StandardOpenOption.CREATE,
StandardOpenOption.APPEND){

对于(inti=1;i我会尝试将file对象传递给file writer,然后去掉
.getName()


使用while进行无限循环(true)。应该使用statemant创建断点,或者将“while”循环设置为while(i如果要查看在程序运行期间对文件所做的更改,则需要刷新写入程序。请注意,它迟早会自动刷新。在文本编辑器中看不到更改的原因取决于编辑器。例如,它无法打开如此大的文件(请注意,在您的程序中,您正在非常快速地向该文件添加字符)。请检查该文件的大小。如果该文件的大小正在增加,则它可以工作


如果你想监控文件,你可以使用类似tail

FileWriter.flush();请将Java API标记为书签:下面是刷新的方法:@ra4king我想他应该刷新
bufferWriter
,以方便使用。Nevzz03。对不起,我是指编写器:D.@AnthonyAccioly the close()在这个特定的示例中,不需要方法调用来查看文件中的更改。Flush可以这样做。我已经发布了我自己的答案。@Nevzz03-您不应该多次关闭同一个编写器-它永远不会工作。@hakyer,您误解了我的答案。这段代码只关闭编写器一次,以刷新对磁盘的其余更改并重新发布来源。事实上,在紧密刷新中连续调用
flush
会破坏性能,因此被认为是一种反模式。我从未向OP或任何人建议在紧密循环中关闭或刷新代码。该循环位于将自动关闭
BufferedWriter
的内部。@AnthonyAccioly是-我同意您可能会发现刷新写入程序可能会降低性能,但这是在while(true)循环(如本问题中的代码示例)时查看更改的唯一方法。当然,正如我所建议的,操作系统也可以自动完成。
BufferedWriter out = new BufferedWriter(new FileWriter(file, true));