2012-04-15 52 views
1

我想下載的Java應用程序的文件,當我嘗試它,它創建了我的硬盤驅動器上的文件,但隨後未能完全下載。我正在使用ftp4j庫來做到這一點。FTP錯誤而下載/上傳在Java應用程序中

import it.sauronsoftware.ftp4j.*; 
public class Main { 
public static void main (String args[]){ 
    FTPClient client = new FTPClient(); 
    try{ 
    client.connect("ftp.myaddress.comlu.com"); 
    client.login("username", "password"); 
    System.out.println("Connection created"); 
    client.download("public_html/ZScreen.png", new java.io.File("d:/xxx/ZScreen.png")); 
    System.out.println("Download successful"); 
    client.disconnect(true); 
    } 
    catch (Exception FTPException){ 
    System.out.println("Shit hit the fan"); 
    } 
} 
} 

我總是得到連接創建和媽媽打粉絲。另外,我的硬盤上有一個文件,但它的大小是0字節。

這是堆棧比賽

Connection created 
java.net.SocketException: Connection reset 
Shit hit the fan 
at java.net.SocketInputStream.read(SocketInputStream.java:189) 
at java.net.SocketInputStream.read(SocketInputStream.java:121) 
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283) 
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325) 
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177) 
at sun.nio.cs.StreamDecoder.read0(StreamDecoder.java:126) 
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:112) 
at java.io.InputStreamReader.read(InputStreamReader.java:168) 
at it.sauronsoftware.ftp4j.NVTASCIIReader.readLine(NVTASCIIReader.java:105) 
at  it.sauronsoftware.ftp4j.FTPCommunicationChannel.read(FTPCommunicationChannel.java:142) 
at it.sauronsoftware.ftp4j.FTPCommunicationChannel.readFTPReply(FTPCommunicationChannel.java:187) 
at it.sauronsoftware.ftp4j.FTPClient.openPassiveDataTransferChannel(FTPClient.java:3538) 
at it.sauronsoftware.ftp4j.FTPClient.openDataTransferChannel(FTPClient.java:3473) 
at it.sauronsoftware.ftp4j.FTPClient.download(FTPClient.java:3302) 
at it.sauronsoftware.ftp4j.FTPClient.download(FTPClient.java:3213) 
at it.sauronsoftware.ftp4j.FTPClient.download(FTPClient.java:3078) 
at Main.main(Main.java:9) 
+0

顯示堆棧跟蹤請。 – Torious 2012-04-15 22:12:25

+0

沒有堆棧跟蹤。我可能已經插入了錯誤的異常類型 – 2012-04-15 23:22:31

+0

嘗試'趕上(例外五){e.printStackTrace(); }'而不是'catch'阻止你現在有... – Torious 2012-04-15 23:24:05

回答

1

您不必在文件夾上寫的權利。檢查劇目是否不在「只讀」狀態。

+0

upvoting因爲我有一個類似的問題,這是我需要的線索。謝謝 – nathj07 2014-11-11 10:36:41

5

顯然沒有對Windows 7的防火牆與使用FTPIPv6的這可以解釋你的問題錯誤。查看錯誤報告here

以下中的任何一個變通方法應該足以解決它:

  • 運行,按照如在Windows控制檯管理員:

    netsh advfirewall set global StatefulFtp disable

  • 運行的JVM使用選項:-Djava.net.preferIPv4Stack=true

+1

令人驚歎!我非常想知道你是如何發現這一點的。謝謝! – skrebbel 2012-10-24 08:54:55