gpt4 book ai didi

java - 使用 Jscape FTP 获取以 A 或 B 结尾的文件列表

转载 作者:行者123 更新时间:2023-12-02 05:02:03 27 4
gpt4 key购买 nike

我在我的java代码中使用FTP(com.jscape.inet.ftp.Ftp)来获取文件列表。我正在使用以下代码来获取文件列表。

Enumeration<String> files= ftp.getNameListing("test*");

上面的代码列出了所有名称为 test* 的文件。

但是,我在列出所有以 A 或 B 结尾的测试文件时遇到问题。我尝试了以下模式来获取列表。

Enumeration<String> files= ftp.getNameListing("test*[A-B]");
Enumeration<String> files= ftp.getNameListing("test*[AB]");

但是它们都不起作用,并且我收到异常

501 Qualifier too long.  Use MVS naming conventions.
com.jscape.inet.ftp.FtpException: Unable to connect to host **.**.**.**
at com.jscape.inet.ftp.FtpBaseImplementation.openDataConnection(Unknown Source)
at com.jscape.inet.ftp.FtpBaseImplementation.getNameListing(Unknown Source)
at com.jscape.inet.ftp.Ftp.getNameListing(Unknown Source)

感谢任何帮助。

最佳答案

FTP 规范规定文件列表命令(LISTMLSD 等)的参数是路径名。所以无论如何都不应该有通配符。

<小时/>

实际上,许多 FTP 服务器确实支持参数中的通配符。但由于规范不允许这样做,所以显然对于支持的通配符没有设定标准。

vsftpd 支持 *?{} 以及 LIST。 vsftpd 不支持现代 MLSD

proftpd 支持*?[]。但仅适用于LIST。它明确不允许使用带有注释的现代 MLSD 通配符:

RFC3659 explicitly does NOT support glob characters. So warn about this, but let the command continue as is.

pureftpd 支持 *?[] 用于 LISTMLSD

<小时/>

但是您没有使用上述任何 FTP 服务器,而是使用某些 IBM 服务器。我不知道它支持哪种通配符(如果有)。

但一般来说,您根本不应该依赖 FTP 服务器来支持任何通配符。

唯一可靠的方法是检索完整的目录列表并在本地过滤文件。

关于java - 使用 Jscape FTP 获取以 A 或 B 结尾的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28179920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com