Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jscape FTP获取以A或B结尾的文件列表_Java_Ftp_Mvs - Fatal编程技术网

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

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。如果路径名指定了目录或其他 组文件时,服务器应传输文件列表

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

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)