加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java:resume在URLConnection下载

发布时间:2020-12-14 05:40:54 所属栏目:Java 来源:网络整理
导读:我写了一个程序,从一些服务器下载一些文件. 目前程序正常工作. 但是我想添加简历支持. 我这样做,但结果文件已损坏: ....File fcheck=new File(SaveDir+"/"+filename);if(resumebox.isSelected() fcheck.exists()){ connection.setRequestProperty("Range","
我写了一个程序,从一些服务器下载一些文件.
目前程序正常工作.
但是我想添加简历支持.
我这样做,但结果文件已损坏:
....

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”能否引起问题?

问题是什么 ?
谢谢.

解决方法

尝试:

connection.setRequestProperty(“Range”,“bytes =”fcheck.length()“ – ”);

根据规格小写范围说明符.另外,如果你的部分文件是500字节,那么你的字节范围是0-499,而你要的是500.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读