有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

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

    所以,我将您的问题改为“如何写入锁定文件?”。 简短的回答是“您无法写入锁定的文件。” 我可以建议的解决方案是实施重试机制。例如,如果您无法写入文件,因为该文件目前处于锁定状态,请将您的内容写入临时文件,然后重试,然后重试。。。直到你成功