Java Apache Commons VFS:使用FTP

Java Apache Commons VFS:使用FTP,java,ftp,apache-commons-vfs,Java,Ftp,Apache Commons Vfs,我正在尝试将Apache Commons VFS与FTP一起使用。在我的FTP上,文件和文件夹的下一个结构是: / /test /test/in /test/in/file1.txt /test/in/file2.txt 我需要连接并读取文件夹/test/in中的所有文件(它会一直更改)。代码: 但我无法获得文件列表,因为它说/test/in不存在。A做了一些测试来检查文件类型:System.out.println(path.getType())具有不同的路径。结果: -文件 -想象的 -文件

我正在尝试将Apache Commons VFS与FTP一起使用。在我的FTP上,文件和文件夹的下一个结构是:

/
/test
/test/in
/test/in/file1.txt
/test/in/file2.txt
我需要连接并读取文件夹/test/in中的所有文件(它会一直更改)。代码:

但我无法获得文件列表,因为它说/test/in不存在。A做了一些测试来检查文件类型:
System.out.println(path.getType())具有不同的路径。结果:

-文件

-想象的

-文件

FileType.Virginal表示该文件不存在。
有没有关于如何使用ftp文件夹的想法?

只需为ftp设置“被动”模式:

FtpFileSystemConfigBuilder.getInstance().setPassiveMode(opts, true);

我有一个类似的问题,单独设置被动模式并不能解决它

需要解析的文件夹是/FTP\u 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
相对于文件系统根目录查看文件,除非它被显式设置为使用用户目录作为根目录,否则会丢失传递的文件路径。因此,解决方案是设置<代码> FtpFileSystemConfigBuilder < /代码>,指示将用户目录视为根。p>
FtpFileSystemConfigBuilder.getInstance( ).setUserDirIsRoot(opts,true);
FtpFileSystemConfigBuilder.getInstance( ).setUserDirIsRoot(opts,true);