Java 正在检查文件状态并将其删除(Windows中映射的Linux驱动器)

Java 正在检查文件状态并将其删除(Windows中映射的Linux驱动器),java,linux,windows,file,delete-file,Java,Linux,Windows,File,Delete File,我已经编写了一个小应用程序来归档一组气象站的历史数据。我的程序执行以下操作: 检查输入文件是否存在 检查输入文件是否由另一个程序打开,该程序可能从气象站发送数据。 将所有内容附加到存档文件。 删除下一次气象站有新数据时,将再次创建输入文件。 Java程序在Windows机器上运行,如果访问本地文件,一切都顺利运行,我可以检查文件是否存在以及是否正在使用。但是当我们开始使用映射到Windows机器上的Linux驱动器时,我开始在exists检查中得到误报,在use检查中得到误报 我能做些什么让它工

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

检查输入文件是否存在 检查输入文件是否由另一个程序打开,该程序可能从气象站发送数据。 将所有内容附加到存档文件。 删除下一次气象站有新数据时,将再次创建输入文件。 Java程序在Windows机器上运行,如果访问本地文件,一切都顺利运行,我可以检查文件是否存在以及是否正在使用。但是当我们开始使用映射到Windows机器上的Linux驱动器时,我开始在exists检查中得到误报,在use检查中得到误报

我能做些什么让它工作呢

这是我的密码:

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库:

,考虑使用Field.Sulter而不是\\。这是零星行为,还是在映射驱动器上从未成功?我这样问是因为您提到了使用中检查的结果,但如果exists失败,那么该检查将始终失败。如果是这种情况,@Everv0id的File.separator建议不起作用,我要确认currentPath是您期望的映射上的不同驱动器号。另一种方法是将代码使用的所有文件保留在项目目录中,并使用相对路径。这将保持此操作的简单性,但对于映射到其他位置的机器的驱动器来说可能没有长期意义。还考虑检查系统.Out.PrimTrnAccess绝对路径:+原始文件.GETCANONICROPATH;问题其实很简单,如果不使用JCIFS库,我无法访问通过Samba共享的文件。这将问题标记为已在StackOverflow中解决。如果您推荐一个库,请说明如何应用它。在答案中添加一些示例代码。