我在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();
上面的例外情况我在第ftpClient.storeFile("testFile.txt", input)
行。
我错过了什么,或者使用它的方式不正确。
由于
答案 0 :(得分:2)
捕获该异常,调用其getIOException()
方法获取导致问题的异常,打印其堆栈跟踪。这将告诉您IOException
导致副本失败的原因。
答案 1 :(得分:2)
我想支持上述解决方案,但我还没有足够的声誉。 那终于救了我!
ftps.setFileType(FTP.BINARY_FILE_TYPE);
ftps.enterLocalPassiveMode();
ftps.execPBSZ(0) ;
ftps.execPROT("P") ;
顺便说一句,我的问题是“在转移过程中重置连接”。以下2个命令对我来说是关键命令。 ftps.execPBSZ(0); ftps.execPROT(“P”);
答案 2 :(得分:0)
如果您在使用ftps传输文件0KB(示例PDF文件)时遇到问题,则必须强制使用被动模式并设置文件类型
ftps.setFileType(FTP.BINARY_FILE_TYPE);
ftps.enterLocalPassiveMode();
ftps.execPBSZ(0) ;
ftps.execPROT("P") ;
答案 3 :(得分:0)
根据我的经验,此错误是由于文件系统已满而导致的