JCIFS SmbFile.exists () и SmbFile.isDirectory () возвращают false, когда он существует, и я могу listFiles () - PullRequest
1 голос
/ 16 апреля 2020

Я не могу заставить .exists () или .isDirectory () вернуть true для существующей подпапки, из которой я могу .listFiles () и получить ожидаемый результат.

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

производит «ложь / ложь». Тем не менее, вызов .listFiles () вернул бы массив [file1, file2, file3 ...]. Я смог осуществить загрузку и выгрузку определенных c файлов по имени (заканчивая расширением) без проблем.

Что я делаю не так?

Редактировать: Это мое версия jcifs btw

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

1 Ответ

0 голосов
/ 17 апреля 2020

Похоже, проблема заключалась в том, что SmbFile # uncPath () был my-server/uploads/subfolder, а не my-server/subfolder, поскольку, несмотря на иерархические отношения между серверами / файловыми системами, такие методы, как exist () и isHidden (), не работают как можно ожидать, и вместо этого всегда возвращать false.

Отладка через него и просмотр свойства fileLocator в SmbFile показали это.

Это было объяснено здесь .

...