私はftpサーバーからファイルをダウンロードするjavaでダウンロードユーティリティを作っています。 URLConnectionクラスを使用してストリームオブジェクトとして接続と入力ストリームを確立しています。 私が直面している問題は、ネットワーク障害のシナリオ(具体的には )です。接続が失われ、接続が復元された後、特定のファイルをダウンロードしていたときに、以前に停止した場所からのダウンロードを再開します。 ダウンロードマネージャーのネットワーク障害の問題
は私が行っているfollをこれを達成するために: -/*ここでは、私はそれがdownloading.Theを再開すべき場所からのストリーム内のポインタを取得するために、これまでにダウンロードされたバイト数をスキップしようとしていますskip()メソッドは、パラメータとして与えられたバイト数をスキップする必要はないため、whileループをスキップする必要があります。 */
while(totalByteSkipped!=downloaded)
{
bytesSkipped = stream.skip(downloaded-totalByteSkipped);
totalByteSkipped = totalByteSkipped+bytesSkipped;
}
しかし、手動で非常に多くのバイトをスキップするこのアプローチは非常に遅く、ダウンロードの全体的な時間に影響を与え、それゆえ、このような場合には、私はどこの時点で、ストリーム内のポインタを取得するためのメカニズムが必要ですダウンロードを停止しました。
同じアプローチで代替アプローチを得ることを願っています。 ありがとうございます!
こんにちはVlad、 私は、sun.net.ftpパッケージからFtpClientを使用していました.pacheClientクラスを認識していませんでした。確かに、問題を解決するのに役立つかどうか試してみてください。 Thanx again :-) – shabeena
@Shabeena:次にhttp://www.docjar.com/docs/api/sun/net/ftp/FtpClient.html#setRestartOffset%28long%29 – Vlad
を使用してください。FtpClientには便利な方法はありません再起動のオフセットですが、ApacheのFTPClientは行います。 – shabeena