当我使用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
调用都是错误的,而且都失败了如果你检查了它们的返回值,你就会知道的