1

Java アプリケーションで FTP 転送を処理するために Apache Commons Net 3.3 を使用しています。

ダウンロードは正常に機能しているようですが、アップロードのローカル インターネット接続機能よりも速度が大幅に低下しています。

ファイル データをストリームに書き込むコードは次のようになります。

        BufferedOutputStream out = new BufferedOutputStream(ftp.getOutputStream(prt));
        BufferedInputStream in = new BufferedInputStream(prov.getInputStream(s));
        byte[] buff = new byte[BUFF_SIZE];
        int len;
        while ((len = in.read(buff)) >= 0 && !prog.isCanceled()) {
            out.write(buff, 0, len);
            total += len;
            prog.setProgress((int) (Math.round((total / combo) * 100)));
        }

        in.close();
        out.close();

BUFF_SIZE = 16KB

FTPClientのバッファサイズも16kBに設定していますsetBufferSize

Filezilla を FTP クライアントとして使用すると、アップロードがはるかに合理的な速度で進行するため、問題はサーバーやインターネット接続にはありません。

この問題は、Java 6 および 7 JVM でも発生するようです。

なぜこれが起こっているのか、誰にも考えがありますか? Commons Net または Java に問題はありますか? または、正しく構成されていないものがありますか?

4

1 に答える 1

0

同じ問題 - SDK 1.6 を使用して問題を解決しますが、より良い方法を見つけようとします

UPD: 解決済み (コメントを参照)

于 2015-04-15T14:06:16.507 に答える