java - 如何在 Java 中写入锁定文件?

标签 java eclipse eclipse-plugin

我正在写入一个扩展名为 .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(); 

        }

最佳答案

首先你的陈述“但是,如果用户决定在计时器运行时打开该文件,我显然会得到 FileNotFound 异常。”是绝对不明显的。

什么叫“打开文件”。如果用户使用文本编辑器或查看工具之一打开文件,则取决于工具。例如,Unix 的 less 或 MS Windows 的记事本只是读取文件,甚至不锁定它。然而,其他工具可以锁定该文件,因此您确实无法写入它,但我认为异常会有所不同。

所以,我会将您的问题更改为以下“如何写入锁定文件?”。 简短的回答是“您无法写入锁定的文件”。 我可以建议的解决方案是实现重试机制。例如,如果您无法写入文件,因为它目前被锁定,请将您的内容写入临时文件,然后重试,然后再试一次......再试一次,直到成功。

关于java - 如何在 Java 中写入锁定文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28084771/

相关文章:

java - spring mvc,我的bean如何在 Controller 中 Autowiring ?

linux - 如何确定正在使用哪个 eclipse sdk?

c++ - 从 ant 运行 ndk-build

java - java中如何查看函数使用的内存

java - 如何用Java读取文件

Java 8 由于多重继承而无法实现两个接口(interface)

java - 在 Eclipse 中调试 Thorntail 服务?

java - 查找 Struts 版本?

java - 在 OSGi 中加载 native Linux 库时出现 UnsatisfiedLinkError

eclipse - 将项目导入 Eclipse 时禁用 Maven 项目构建器