1

Java アプリケーションでファイルをダウンロードしたいのですが、ダウンロードしようとすると、ハード ドライブにファイルが作成されますが、完全にダウンロードできません。私はそれを行うためにftp4jライブラリを使用しています。

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)
4

2 に答える 2

5

どうやら、IPv6でのFTPの使用に関連するWindows 7 ファイアウォールに、問題を説明するバグがあるようです。こちらのバグレポートを参照してください。

次の回避策のいずれかを実行すると、問題を解決できます。

  • Windows コンソールで管理者として次を実行します。

    netsh advfirewall set global StatefulFtp disable

  • 次のオプションを使用して JVM を実行します。-Djava.net.preferIPv4Stack=true

于 2012-06-29T17:18:43.023 に答える
1

フォルダに書き込む権限がありません。レパートリーが「読み取り専用」状態になっていないか確認してください。

于 2012-05-30T21:16:10.990 に答える