我有一个java文件,它将字符串(长文本文档)FTP到远程位置。一切似乎都有效,但是当调用ftp.storeFile(a,b)时,我的挂起时间非常长。然后返回一个replyCode 425.这是奇怪的,因为myData.txt出现在远程目标内,但它是空白的。必须有阻止输入流的东西?有谁知道这个问题是什么?
Java代码:
public void doFTP(){
FTPClient ftp = new FTPClient();
FTPClientConfig config = new FTPClientConfig();
ftp.configure(config);
boolean error = false;
try {
int reply;
String server = "example.com";
ftp.connect(server);
ftp.login(username, password);
reply = ftp.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
}
InputStream is = new ByteArrayInputStream(myString.getBytes()); //String
ftp.setFileType(ftp.BINARY_FILE_TYPE, ftp.BINARY_FILE_TYPE);
ftp.setFileTransferMode(ftp.BINARY_FILE_TYPE);
Boolean test = ftp.storeFile("myData.txt", is); //FTP store here
System.out.println(test);
reply = ftp.getReplyCode();
System.out.println(reply);
is.close();
ftp.logout();
} catch(IOException e) {
// ... not important
} finally {
// ... not important
}
}
答案 0 :(得分:0)
您展示的代码对我来说很奇怪。你有 InputStream is = 的地方 此代码应位于 try {.....} 代码块中。
答案 1 :(得分:0)
发现问题,我需要将其切换为:
ftp.enterLocalPassiveMode();
如果有人愿意解释,我仍然不太明白为什么要这样做。