检查文件是否存在java

我想创建文本文件,但如果文件已经存在,它不应该创建新文件,而应该将文本附加到现有文件的内容(最后)。 我怎样才能在Java中做到这一点?

对于每一秒钟,我正在从输入流读取数据,当我停止阅读时,再次开始阅读数据,那时我应该写入相同的文件,如果文件已经存在

我是否必须检查条件:

if(file.exists){

} else{
   new File();
}

我必须做什么?


您可以使用以下代码追加到已存在的文件 -

try {
    BufferedWriter out = new BufferedWriter(new FileWriter("filename", true));
    out.write("data");
    out.close();
} catch (IOException e) { }

如果FileWriter的构造函数中的第二个参数为true ,那么字节将写入文件的末尾而不是开头。

引用斯蒂芬的评论:

...传递true作为第二个参数,如果该文件不存在,则会创建该文件,如果该文件存在,则将其打开并添加。


我必须检查条件if(file.exists){ }else{ new File(); } if(file.exists){ }else{ new File(); }

不,你不必这么做:查看解决方案的其他答案。

实际上,做这样的事情会是一个糟糕的主意 ,因为它会产生一种潜在的竞争条件,可能会使您的应用程序偶尔死亡或者破坏文件!

假设操作系统在file.exists()调用返回false后立即抢占应用程序,并将控制权交给其他某个应用程序。 然后假设其他应用程序创建了该文件。 现在,当操作系统恢复应用程序时,它不会意识到文件已经创建,并尝试自己创建它。 根据情况,这可能会破坏现有文件,或者由于文件锁定冲突而导致此应用程序抛出IOException。

顺便提一下, new File()实际上并不会导致创建任何文件系统对象。 这只发生在你打开文件时; 例如通过调用new FileOutputStream(file);


如果你想附加到文件,如果它已经存在,则不需要使用exists()检查它的存在。 你只需要创建一个FileWriter ,将append标志设置为true; 例如

PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("foo.txt", true)));
pw.println("Hello, World");
pw.close();

这将创建该文件,如果它不存在或否则附加到它的结尾。

链接地址: http://www.djcxy.com/p/76379.html

上一篇: check file exists java

下一篇: The performance impact of using instanceof in Java