我编写了一个小应用程序,用于归档来自一组气象站的历史数据。我的程序执行以下操作:


检查输入文件是否存在
检查输入文件是否被另一个程序打开(可能是应用程序从气象站发送数据)。
将所有内容附加到存档文件。
删除输入文件(下次从气象站收到新数据时将再次创建)。


Java程序在Windows计算机上运行,​​并且如果访问本地文件,则所有程序运行都将顺利进行(我可以检查文件是否存在以及是否正在使用中)。但是,当我们开始使用映射到Windows机器上的Linux驱动器时,我开始在exist-check上出现假阴性,而在使用中检查上出现假阳性。

关于我可以做些什么的任何想法?

这是我的代码:

File originalFile = new File (currentPath +  "\\" + line[1]);
if (originalFile.exists()) {
    boolean fileIsNotLocked = originalFile.renameTo(originalFile);
    if (fileIsNotLocked) {

        /* WORK WITH THE FILE TO COPY ITS CONTENTS ETC */

        if(originalFile.delete())
            System.out.println("Successfully deleted file at = " + originalFile);
        else
            System.out.println("Could not delete file at = " + originalFile);
    }
}

最佳答案

作为记录,该解决方案使用了JCIFS库:https://jcifs.samba.org/

08-06 13:32