我想创建文本文件,但如果文件已经存在,则不应创建新文件,而应将文本附加到现有文件的内容(末尾)。我该如何在Java中实现?
每隔一秒钟,我从输入流中读取数据,当我停止读取并再次开始读取数据时,此时应将其写入同一文件(如果文件已存在)。
我需要检查条件吗?
if(file.exists){
} else{
new File();
}
我需要做什么?
try {
BufferedWriter out = new BufferedWriter(new FileWriter("filename", true));
out.write("data");
out.close();
} catch (IOException e) { }
true
,则字节将被写入文件的末尾而不是开头。true
作为第2个参数传递会在文件不存在时创建文件,并在文件存在时打开文件以进行追加。”true
作为第二个参数传递会导致文件在不存在时被创建,并在存在时以追加方式打开。 - Stephen Cif(file.exists){ }else{ new File(); }
吗?file.exists()
返回false
之后立即抢占了您的应用程序,并将控制权交给其他应用程序。然后假设其他应用程序创建了该文件。现在当操作系统恢复您的应用程序时,它不会意识到该文件已经被创建,并尝试自己创建它。根据情况,这可能会破坏现有的文件,或者由于文件锁定冲突而导致此应用程序抛出IOException。new File()
并不会实际创建任何文件系统对象。只有当您打开文件时(例如通过调用new FileOutputStream(file);
),才会发生这种情况。exists()
检查其是否存在是没有必要的。 您只需要创建一个设置了追加标志的FileWriter
即可,例如:
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("foo.txt", true)));
pw.println("Hello, World");
pw.close();
如果文件不存在,则创建该文件,否则将内容追加到文件末尾。