我正在尝试将文件FTP到远程计算机上。以下是我的代码: -
FTPClient ftpClient = new FTPClient();
ftpClient.connect("home.abc.com");
ftpClient.login("remote", "guesst12");
int replyCode = ftpClient.getReplyCode();
ftpClient.changeWorkingDirectory("share"))
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream input = new FileInputStream(new File("H:/testFile.txt"));
OutputStream out = ftpClient.storeFileStream("testFile.txt");
Util.copyStream(input, out);
out.close();
input.close();
ftpClient.completePendingCommand()
ftpClient.logout();
ftpClient.disconnect();
当我执行这段代码时,代码执行没有任何问题,但在远程机器上,当我检查文件时,正在创建文件,但没有内容(OKB)文件。我在代码中遗漏了什么。
[更新]: 我尝试使用以下代码存储文件: -
if(ftpClient.storeFile("testCopy.txt", input)) {
System.out.println("File Stored Successfully");
}
System.out.println(ftpClient.getReplyString());
现在收到的回复代码是: - 451 Failure writing to local file.
这意味着什么。
由于
答案 0 :(得分:2)
经过一遍又一遍的观察,我不断提出不同的事情。
在复制流之前,您确定InputStream正在读取文件吗?因为我不确定FileInputStream是否在启动时读取了文件。
答案 1 :(得分:0)
我怀疑问题出在Util.copyStream
,这是您未提供的代码。我强烈建议您使用IOutils from Apache Commons IO复制流。
答案 2 :(得分:0)
查看类似问题的older questions here,看起来您点击a bug of the Commons-NET library(其中FTPClient是其中的一部分)。
尝试安装较新版本(3.0.1或更高版本)或较早版本(2.2)以解决此问题。
答案 3 :(得分:0)
尝试通过FTP复制文件时遇到FTP错误451的原因之一 特别是如果您在服务器端看到0大小的文件, 可能是由于磁盘上的 No Space 。