用JAVA下载HTTP文件时遇到问题 10

我用JAVA写一个下载文件的工具,但是遇到了问题,就是我下载一个文件时,它过小,不足1KB,只有700多字节,但我获得它的“Content-Length”有16字节,这样... 我用JAVA写一个下载文件的工具,但是遇到了问题,就是我下载一个文件时,它过小,不足1KB,只有700多字节,但我获得它的“Content-Length”有16字节,这样搞的我下载下来的文件就只有16字节大小,文件被修改了,导致打不开了。这种情况该怎么办去下载呢?因为下载的文件(压缩包)查看了下

像这个文件的content-length为31118,下载顺利,解压也没问题
我下载另外一个文件(压缩包)时,URL连接后面的201407改为20140904,content-length为16,我用InputStream input = httpConnection.getInputStream()来传输,input.avalilable大小也为16字节,这样就导致了所有很小的文件全部设置大小为16字节了,我甚至用byte[1]设置下载大小,然后对流进行保存,用read函数,这样都无法避免
但是我用浏览器下载后发下压缩包大小为700多字节,占用空间大小为4KB
百思不得其解,希望大神解答。
这种情况改怎么下载呢?
展开
 我来答
小童鞋_成er
2014-09-19 · 知道合伙人数码行家
小童鞋_成er
知道合伙人数码行家
采纳数:4650 获赞数:22879
主要从事J2EE工作,热爱Java,用心讨论技术,共同进步。

向TA提问 私信TA
展开全部
import java.net.*;
import java.io.*;
public class URLConnectionDemo{
    public static void main(String[] args)throws Exception{
        URL url = new URL("http://www.scp.edu.cn/pantoschoolzz/BG/Bord/Message/DownloadMessageAttachment.aspx?ID=215");
        URLConnection uc = url.openConnection();
        String fileName = uc.getHeaderField(6);
        fileName = URLDecoder.decode(fileName.substring(fileName.indexOf("filename=")+9),"UTF-8");
        System.out.println("文件名为:"+fileName);
        System.out.println("文件大小:"+(uc.getContentLength()/1024)+"KB");
        String path = "D:"+File.separator+fileName;
        FileOutputStream os = new FileOutputStream(path);
        InputStream is = uc.getInputStream();
        byte[] b = new byte[1024];
        int len = 0;
        while((len=is.read(b))!=-1){
            os.write(b,0,len);
        }
        os.close();
        is.close();
        System.out.println("下载成功,文件保存在:"+path);
    }
}

//给你一个下载的例子吧,仅供参考。

jamxval
2014-09-19 · TA获得超过6823个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1445万
展开全部
首先我们观察 HTTP 通信过程发现服务端确实说明了大小是 31118 字节,对吧?
似乎程序得到 Content-Length 的方法有问题,这个过程中有没有发生重定向的事情?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小锄头andrew
2014-09-19 · TA获得超过627个赞
小锄头andrew
采纳数:224 获赞数:627

向TA提问 私信TA
展开全部
你要flush一下啊,骚年
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式