JCIFS SmbFile.exists() 和 SmbFile.isDirectory() return false 当它存在时我可以 listFiles()

JCIFS SmbFile.exists() and SmbFile.isDirectory() return false when it exists and I can listFiles()

对于存在的子文件夹,我无法将 .exists() 或 .isDirectory() 设为 return true,我可以从中获取 .listFiles() 并获得预期结果。

subfolder = createSmbFile("smb://my-server/uploads/subfolder");
log.debug(subfolder.exists() + "/" + subfolder.isDirectory());

产生 "false/false"。然而调用 .listFiles() 将 return 一个 [file1, file2, file3...] 的数组。 我已经能够按名称(以扩展名结尾)实现特定文件的上传和下载,没有问题。

我做错了什么?

编辑:顺便说一句,这是我的 jcifs 版本

<dependency>
     <groupId>eu.agno3.jcifs</groupId>
     <artifactId>jcifs-ng</artifactId>
     <version>2.1.4</version>
</dependency>

问题似乎是 SmbFile#uncPath() 是 my-server/uploads/subfolder,而不是 my-server/subfolder,因为尽管 servers/filesystems、exists() 和isHidden() 并不像人们预期的那样工作,而是总是 return false.

调试它并查看 SmbFile 的 fileLocator 属性 显示了这一点。

已解释here