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 に問題はありますか? または、正しく構成されていないものがありますか?