Java Apache Commons VFS:使用FTP
我正在尝试将Apache Commons VFS与FTP一起使用。在我的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())具有不同的路径。结果: -文件 -想象的 -文件
/
/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
我使用vfs2DefaultFileMonitor
监视文件夹,并在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);