eclipse如何在Java中写入锁定文件?
我正在写一个文件,里面有。csv扩展。在文件中写入的函数由计时器调用,计时器持续检查某些条件并更新文件。但是,如果用户决定在计时器运行时打开该文件,我显然会得到一个异常
是否有可能避免这种情况并更新文件,以便用户在重新打开文件时看到更新的文件
编辑:
Timer=new Timer(5000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Display.getDefault().asyncExec(new Runnable(){
@Override
public void run()
{
//Here I check the conditions
checkConditions();
if(checkConditions())
{
writeInFile();
}
}
}
}
编辑(2):
public void writeInFile()
{
File firstFile=new File("file location");
BufferedWriter out_firstFile = null;
FileWriter firstFileStream;
firstFileStream= new FileWriter(firstFile, false);
out_firstFile = new BufferedWriter(firstFileStream);
out_firstFile.write("Here I write something :) ");
out_firstFile.close();
}
# 1 楼答案
首先,您的语句“但是,如果用户决定在计时器运行时打开该文件,我显然会得到一个FileNotFound异常。”这是绝对不明显的
你称之为“打开文件”。如果用户使用文本编辑器或某个查看工具打开文件,则取决于该工具。例如,Unix的
less
或MS Windows的记事本只是读取文件,甚至不锁定它。然而,其他工具可以锁定该文件,因此您确实无法写入该文件,但我认为例外情况将有所不同所以,我将您的问题改为“如何写入锁定文件?”。 简短的回答是“您无法写入锁定的文件。” 我可以建议的解决方案是实施重试机制。例如,如果您无法写入文件,因为该文件目前处于锁定状态,请将您的内容写入临时文件,然后重试,然后重试。。。直到你成功