Java 使用Jscape FTP获取以A或B结尾的文件列表
我在java代码中使用FTP(com.jscape.inet.FTP.FTP)来获取文件列表。我使用下面的代码获取文件列表Java 使用Jscape FTP获取以A或B结尾的文件列表,java,ftp,mvs,Java,Ftp,Mvs,我在java代码中使用FTP(com.jscape.inet.FTP.FTP)来获取文件列表。我使用下面的代码获取文件列表 Enumeration<String> files= ftp.getNameListing("test*"); 非常感谢您的帮助。您连接的FTP服务器不接受您指定的文件名通配符。FTP文件列表命令的定义不是很好。下面是关于协议命令的说明: 列表(列表) 此命令导致从服务器向服务器发送列表 被动DTP。如果路径名指定了目录或其他 组文件时,服务器应传输文件列表
Enumeration<String> files= ftp.getNameListing("test*");
非常感谢您的帮助。您连接的FTP服务器不接受您指定的文件名通配符。FTP文件列表命令的定义不是很好。下面是关于协议命令的说明: 列表(列表)
此命令导致从服务器向服务器发送列表 被动DTP。如果路径名指定了目录或其他 组文件时,服务器应传输文件列表 在指定的目录中。如果路径名指定了 文件,则服务器应在 文件null参数表示用户当前的工作状态或 默认目录。数据传输是通过数据传输的 ASCII类型或EBCDIC类型的连接。(用户必须 确保类型为适当的ASCII或EBCDIC)。 因为文件上的信息可能因系统而异 对于系统来说,这些信息可能很难自动使用 在程序中,但对人类用户可能非常有用 名单(NLST)
此命令导致从发送目录列表 服务器到用户站点。路径名应指定一个 目录或其他系统特定的文件组描述符;A. null参数表示当前目录。服务器 将返回文件名流,而不返回其他名称 信息。数据将以ASCII或ASCII格式传输 数据连接上的EBCDIC类型作为有效路径名 由或分隔的字符串。(同样,用户必须 确保类型正确。)此命令用于 将程序可以使用的信息返回到 进一步自动处理文件。例如,在 “多重获取”功能的实现 您会注意到,对于客户端可以发送什么通配符,或者服务器如何解释通配符,完全没有进行任何讨论。这是因为在这方面根本没有标准。Unix ftp服务器通常使用类Unix通配符实现文件列表,如Unix
ls
命令,但这绝不是必需的行为
您应该查看远程FTP服务器的文档,或与远程系统的管理员交谈,以了解如何请求您正在查找的文件列表。FTP规范指出,文件列表命令(
LIST
,MLSD
等)的参数是路径名。所以无论如何,不应该有通配符
在实践中,尽管许多FTP服务器都支持wilcards。但是由于规范不允许这样做,显然没有为支持的通配符设置标准 vsftpd支持
*
、?
和{}
与列表
。vsftpd不支持现代MLSD
proftpd支持*
、?
和[]
。但仅适用于列表
。它明确不允许带有现代MLSD
和注释的智能卡:
RFC3659显式不支持全局字符。所以警告
这样做,但让命令按原样继续
pureftpd支持*
、?
和[]
用于列表和MLSD
但是您使用的不是上述任何FTP服务器,而是一些IBM服务器。我不知道它支持哪种通配符(如果有的话)
但一般来说,您不应该依赖FTP服务器来支持任何通配符
唯一可靠的方法是检索完整的目录列表并在本地筛选文件
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)