2

当 ftp 文件转移到其他机器时,我得到以下异常。

org.apache.commons.net.io.CopyStreamException: IOException caught while copying.
    at org.apache.commons.net.io.Util.copyStream(Util.java:119)
    at org.apache.commons.net.io.Util.copyStream(Util.java:151)
    at org.apache.commons.net.io.Util.copyStream(Util.java:162)
    at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:373)
    at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1360)
    at com.fs.ftp.FTPUsingFTPClientApache.startFTP(FTPUsingFTPClientApache.java:40)
    at com.fs.ftp.FTPUsingFTPClientApache.main(FTPUsingFTPClientApache.java:17)

我用于 FTP 的代码类似于:-

FTPClient ftpClient = new FTPClient();
ftpClient.connect("home.abc.com");
ftpClient.login("remote", "guesst12");
int replyCode = ftpClient.getReplyCode();
if(FTPReply.isPositiveCompletion(replyCode)) {
    System.out.println("Connection proper");
}

if(ftpClient.changeWorkingDirectory("share")) {
    System.out.println("Directory Change Succesfull");
}
InputStream input = new FileInputStream(new File("H:/testFile.txt"));
BufferedInputStream inputStrean = new BufferedInputStream(input);
if(ftpClient.storeFile("testFile.txt", input)) {
    System.out.println("File Stored Successfully");
}
input.close();
inputStrean.close();
ftpClient.logout();
ftpClient.disconnect();

我在 line 得到的上述异常ftpClient.storeFile("testFile.txt", input)

我是否遗漏了某些东西,或者以不正确的方式使用它。

谢谢

4

4 回答 4

2

捕获该异常,调用其getIOException()方法以获取导致问题的异常,并打印其堆栈跟踪。这将告诉您IOException导致复制失败的原因。

于 2011-07-16T15:04:23.900 回答
2

我想支持上述解决方案,但是我还没有足够的声誉。那终于救了我!

        ftps.setFileType(FTP.BINARY_FILE_TYPE);
        ftps.enterLocalPassiveMode();
        ftps.execPBSZ(0) ;
        ftps.execPROT("P") ;

顺便说一句,我的问题是“在传输过程中连接被重置”。以下 2 个命令对我来说是关键命令。ftps.execPBSZ(0) ; ftps.execPROT("P") ;

于 2017-03-20T20:40:15.200 回答
1

根据我的经验,此错误是由于文件系统已满引起的

于 2018-06-08T07:56:27.410 回答
0

如果您在 ftps 传输后遇到文件 0KB(示例 PDF 文件)问题,您必须强制被动模式并设置文件类型

            ftps.setFileType(FTP.BINARY_FILE_TYPE);
            ftps.enterLocalPassiveMode();
            ftps.execPBSZ(0) ;
            ftps.execPROT("P") ;
于 2016-10-19T17:21:14.827 回答