如何写入 Java 中的锁定文件?
How to write to a locked file in 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();
}
首先你的说法"However, if the user decides to open that file while the timer is running I will obviously get a FileNotFound exception."绝对不明显。
你叫什么"open the file"。如果用户使用文本编辑器或其中一种查看工具打开文件,则取决于该工具。例如,Unix 的 less
或 MS 的记事本 Windows 只是读取文件,甚至不锁定它。然而其他工具可以锁定文件,所以你确实无法写入它,但我认为例外情况会有所不同。
所以,我会将您的问题更改为以下 "How to write to locked file?"。
简短的回答是 "you cannot write to the locked file."
我可以建议的解决方案是实施重试机制。例如,如果您不能写入文件,因为它此时被锁定,请将您的内容写入临时文件,然后再试一次,再试一次……再试一次,直到成功。
我正在写入一个扩展名为 .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();
}
首先你的说法"However, if the user decides to open that file while the timer is running I will obviously get a FileNotFound exception."绝对不明显。
你叫什么"open the file"。如果用户使用文本编辑器或其中一种查看工具打开文件,则取决于该工具。例如,Unix 的 less
或 MS 的记事本 Windows 只是读取文件,甚至不锁定它。然而其他工具可以锁定文件,所以你确实无法写入它,但我认为例外情况会有所不同。
所以,我会将您的问题更改为以下 "How to write to locked file?"。 简短的回答是 "you cannot write to the locked file." 我可以建议的解决方案是实施重试机制。例如,如果您不能写入文件,因为它此时被锁定,请将您的内容写入临时文件,然后再试一次,再试一次……再试一次,直到成功。