2011-07-16 223 views
2

當ftp文件轉移到其他某臺機器時,我收到以下異常。使用FTPClient獲取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)

我錯過了什麼,或者使用它不是正確的方式。

感謝

回答

2

捕獲了異常,調用它的getIOException()方法來獲取引起問題的例外,一個打印的堆棧跟蹤。這會告訴你什麼IOException導致副本失敗。

+0

我在代碼'ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);'後添加了一行代碼執行正常,但在遠程計算機上,0KB的文件是在沒有內容的情況下創建的。這將有助於.. –

+2

@ M.J。 - 不是真的。你已經改變了問題,而不是弄清楚原來的問題。更有幫助的是我建議你看/提供的信息。 –

+0

也看到這個http://stackoverflow.com/a/19944565/185022 –

0

如果你有文件0KB(例如PDF文件)一旦被FTPS tranfered您必須強制被動模式,並設置文件類型

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

我想支持上述方案,但問題我沒有足夠的聲譽呢。 終於救了我!

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

順便問一下,我的問題是「連接在傳輸過程中復位」。以下2個命令是我的關鍵命令。 ftps.execPBSZ(0); ftps.execPROT(「P」);