4

我正在尝试将文件 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

4 回答 4

2

在一遍又一遍地看它之后,我不断地想出不同的东西。

您确定 InputStream 在复制流之前正在读取文件吗?因为我不确定 FileInputStream 读取的是启动时的文件。

于 2011-07-16T15:29:23.203 回答
0

我怀疑问题出在Util.copyStream您没有提供的代码中。我强烈建议您使用Apache Commons IO 的 IOutils来复制流。

于 2011-07-16T15:44:39.770 回答
0

尝试通过 FTP 复制文件时遇到 FTP 错误 451 的原因之一,特别是如果您看到在服务器端创建了 0 大小的文件,可能是由于磁盘上没有空间

于 2015-01-28T10:14:20.547 回答
0

这里查看具有类似问题的旧问题,看起来您遇到了 Commons-NET 库的错误(其中 FTPClient 是其中的一部分)。

尝试安装更新版本(3.0.1 或更高版本)或早期版本(2.2)来解决此问题。

于 2011-07-17T00:52:21.450 回答