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

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

谢谢

经过一遍又一遍的观察,我不断提出不同的事情。

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

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

看一下类似问题的旧问题,看起来你遇到了Commons-NET库的错误 (FTPClient是其中的一部分)。

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

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