检查文件存在java

3 java file core

我想创建文本文件,但如果文件已经存在,则不应创建新文件,而应将文本附加到现有文件的内容(最后).我怎么能用Java做呢?

每当我停止阅读时,我正在从输入流中读取数据,并且当我再次开始读取数据时,如果文件已经存在,我应该写入相同的文件

我必须检查条件:

if(file.exists){

} else{
   new File();
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

Kir*_*tan 12

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

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

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

引用斯蒂芬的评论:

... true作为第二个参数传递会导致文件创建(如果它不存在)并且如果它存在则打开以进行追加.

  • 确切地说,将"true"作为第二个参数传递会导致文件在不存在的情况下被创建,并且如果文件存在则打开以进行追加. (2认同)

Ste*_*n C 10

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

不,您不必这样做:请参阅解决方案的其他答案.

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

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

顺便说一句,new File()实际上并不会导致创建任何文件系统对象.只有当你打开'文件'时才会发生这种情况; 例如通过电话new FileOutputStream(file);