一旦FTP在java中完成,就会创建0 kb文件

时间:2011-07-16 15:27:24

标签: java ftp ftp-client apache-commons-net

我正在尝试将文件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.这意味着什么。

由于

4 个答案:

答案 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