【问题标题】:Getting an error while FTP file using FTPClient使用 FTPClient FTP 文件时出错
【发布时间】:2011-07-16 13:30:07
【问题描述】:

我在将 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) 行得到了上述异常。

我是否遗漏了什么,或者使用方式不正确。

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我在代码ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 中添加了一行,之后代码可以正常执行,但是在远程机器上,创建了0KB 的文件,没有内容。这会有帮助吗..
    • @M.J. - 并不真地。你已经改变了问题,而不是弄清楚原来的问题是什么。更有帮助的是我建议您查看/提供的信息。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      根据我的经验,这个错误是因为文件系统已满

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2016-07-02
          • 2014-11-21
          • 1970-01-01
          • 1970-01-01
          • 2019-06-08
          • 2023-01-27
          • 1970-01-01
          • 2013-04-24
          • 2015-07-06
          相关资源
          最近更新 更多