【问题标题】:File.exists() return 'false' for existing file on Samba share network folderFile.exists() 为 Samba 共享网络文件夹上的现有文件返回“假”
【发布时间】:2020-01-06 03:27:44
【问题描述】:

我确定该文件存在于 Samba 共享中。但是file.exists() 为它返回'false'。 另一个系统将此文件放在 Samba 共享文件夹中,并通知我们的应用程序该文件已上传。然后我们调用file.exists() 进行检查并获得'false'

Path sourceFile = ... 
sourceFile.toFile().exists() 
//return 'false' for existing file with path like \\share1\mc\logs.txt

可能文件还没有完全写入或者没有完全关闭,会不会影响结果file.exists()

【问题讨论】:

  • 澄清一下:您使用的是java.io 还是java.nio.file 包?
  • @ShiDoiSi 我可能错过了你的问题的微妙之处,但没有java.io.Path,只有java.nio.file.Path
  • 你能打印出路径并把它和sourceFile.toFile()的结果贴出来吗?显示的代码对我来说工作正常
  • @aaron 你说得对,我只看了File。那一定是NIO。
  • @ShiDoiSi NIO 只代表 Path 获取File;真正的工作是由java.io.File#exists

标签: java samba


【解决方案1】:

好吧,至少你观察到的行为被documentation覆盖了

如果文件不存在则为假或无法确定其存在

(强调)。

这里可能与这个问题有关:Why does 'File.exists' return true, even though 'Files.exists' in the NIO 'Files' class returns false,尽管答案对我来说似乎有点不确定。

【讨论】:

  • 这里使用 File.exists() 方法,而不是 Files.exists(...),但感谢链接!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 2010-11-17
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多