我写了一个程序,从一些服务器下载一些文件。
目前程序运行正常。
但我想为其添加简历支持。
我正在这样做但是结果文件已损坏:
....
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)
然后尝试恢复它。
然后我用十六进制编辑器打开文件,在偏移量 72720 处重复第一个字节:
字节 0-36:FLV.............«........onMetaData
字节72720-72756: FLV.......«.......onMetaData
它从头开始下载!
当我通过 wget 执行此操作时,它会正确执行并通过 Content-Range 字段响应!
服务器在 wget 日志中响应“302 FOUND”和“206 Partial Content”。
“302 FOUND”会导致问题吗?
问题是什么 ?
谢谢。