У меня была похожая проблема, и установка только пассивного режима не решила ее.
Папка, которую нужно было разрешить, была / FTP_HOME / data / xxxx
Я наблюдал за папкой с помощью vfs2 DefaultFileMonitor
и прослушивал FileChangeEvent
безрезультатно.
FileObject listendir = fsManager.resolveFile("ftp://"+username+":"+password+"@"+server+"/data/" + "xxxx/",opts);
Копание немного глубже показало, что FileObject
isReadable()
и exists()
вернули false
, что означает, что FileObject
недоступен.
Глядя на источник AbstractFileObject
, он зависел от этих проверок, чтобы определить каталог (Проверка AbstractFileObject
getParent()
).
Проблема заключалась в том, что AbstractFileObject
просматривал файл относительно корня файловой системы, если только он явно не настроен на использование каталога User в качестве корня, следовательно, отсутствовал путь к файлу, который был передан. Таким образом, решение состояло в том, чтобы установить FtpFileSystemConfigBuilder
, указывающий на то, что пользовательский каталог считается корневым.
FtpFileSystemConfigBuilder.getInstance( ).setUserDirIsRoot(opts,true);