用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
百思不得其解,希望大神解答。
这种情况改怎么下载呢? 展开
像这个文件的content-length为31118,下载顺利,解压也没问题
我下载另外一个文件(压缩包)时,URL连接后面的201407改为20140904,content-length为16,我用InputStream input = httpConnection.getInputStream()来传输,input.avalilable大小也为16字节,这样就导致了所有很小的文件全部设置大小为16字节了,我甚至用byte[1]设置下载大小,然后对流进行保存,用read函数,这样都无法避免
但是我用浏览器下载后发下压缩包大小为700多字节,占用空间大小为4KB
百思不得其解,希望大神解答。
这种情况改怎么下载呢? 展开
3个回答
2014-09-19 · 知道合伙人数码行家
关注
展开全部
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);
}
}
//给你一个下载的例子吧,仅供参考。
展开全部
首先我们观察 HTTP 通信过程发现服务端确实说明了大小是 31118 字节,对吧?
似乎程序得到 Content-Length 的方法有问题,这个过程中有没有发生重定向的事情?
似乎程序得到 Content-Length 的方法有问题,这个过程中有没有发生重定向的事情?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要flush一下啊,骚年
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询