使用FTPClient在FTP文件中获取错误

时间:2011-07-16 13:30:07

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

我在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)行。

我错过了什么,或者使用它的方式不正确。

由于

4 个答案:

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

根据我的经验,此错误是由于文件系统已满而导致的