从 Java 代码向 AS400 FTP 服务器发送"ASC"和"QUOTE TYPE C 1252"命令



当我使用cmd将文件放入AS400时,在连接ftp后,我如下所示:

ftp cd /home
ftp prompt 1
ftp ASC
ftp QUOTE TYPE C 1252
ftp mput *
ftp bye

一切都很好。该文件编码良好。现在,当我尝试在Java中做同样的事情时。我可以把文件放进去,但它没有很好地编码。我真的被卡住了。有人能帮我吗。。

这是我的Java代码:

FTP ftp = this.SABFTPConnection();
ftp.cd(sabConfig.getDirectory());
ftp.setDataTransferType(FTP.BINARY);
ftp.issueCommand("prompt 1");
ftp.issueCommand("ASC");
ftp.issueCommand("QUOTE TYPE C 1252");
File io = new File(file);
boolean done = ftp.put(io, io.getName());
if (done) {
Log.getLog(SABData.class).info("file "+ io.getName() +" successfuly uploaded");
collected = true;
}

FTP.issueCommand向服务器发送FTP协议命令

  • FTP协议中没有prompt 1命令prompt是关闭交互式提示的ftp客户端命令。尝试在Java代码中复制它是没有意义的,因为它没有提示。

  • FTP协议中没有ASC命令。asc[ii]是切换到ASCII传输模式的ftp客户端命令。这违背了代码中的ftp.setDataTransferType(FTP.BINARY)

    此外,CCD_ 11向服务器发送CCD_ 12命令。如果您稍后发送TYPE C ...asc/TYPE A的效果将被取消。因此asc是多余的。

  • quote是一个ftp客户端命令,它将其参数作为命令发送到FTP服务器。所以您要发送TYPE C 1252,而不是QUOTE TYPE C 1252

所以基本上所有的FTP.issueCommand调用都是错误的,而且都失败了如果你检查了它们的返回值,你就会知道的

最新更新