いくつかのサーバーからいくつかのファイルをダウンロードするプログラムを作成しました。
現在、プログラムは正しく動作します。
しかし、私はそれに履歴書のサポートを追加したいと思います。
私はこのようにしていますが、結果ファイルが破損しています:
....
File fcheck=new File(SaveDir+"/"+filename);
if(resumebox.isSelected() && fcheck.exists()){
connection.setRequestProperty("Range", "Bytes="+(fcheck.length())+"-");
}
connection.setDoInput(true);
connection.setDoOutput(true);
BufferedInputStream in = new BufferedInputStream (connection.getInputStream());
pbar.setIndeterminate(false);
pbar.setStringPainted(true);
java.io.FileOutputStream fos ;
if(resumebox.isSelected()){
if(fcheck.exists()){
if(connection.getHeaderField("Accept-Ranges").equals("bytes")){
fos = new java.io.FileOutputStream(SaveDir+"/"+filename,true);
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
....
再開をサポートしていることがわかっているサーバーでテストしています。
いくつかのバイトをダウンロードしました。(72720)
それから再開しようとしました。
次に、16進エディタでファイルを開きました。オフセット72720で、最初のバイトが繰り返されます。
バイト0〜36:FLV.............«..........onMetaData
バイト72720-72756:FLV.............«..........onMetaData
最初からダウンロードを開始します!
私がwgetでそれを行うと、それは正しく実行され、Content-Rangeフィールドで応答します!
wgetログに「302FOUND」と「206PartialContent」が含まれるサーバーの応答。
「302FOUND」は問題を引き起こす可能性がありますか?
何が問題ですか ?
ありがとう。