检查文件是否存在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