用Java HTTP下载文件获取失败,不明原因 10

我用JAVA下载小于1K的文件,下载下来后发现,文件全都是固定大小。我试过用BufferedOutputStream也用了FileOutputStreamRandomAc... 我用JAVA下载小于1K的文件,下载下来后发现,文件全都是固定大小。
我试过用BufferedOutputStream 也用了FileOutputStream RandomAccessFile也用了

就是无法打开文件,应该是获取文件的长度出错了

RandomAccessFile oSavedFile= new RandomAccessFile(downloadpathTemp+"\\"+ffName, "rw");

FileOutputStream fs =new FileOutputStream("C:\\workspace\\jyb_uzip"+"\\"+ffName);
BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream("C:\\workspace\\jyb_uzip"+"\\"+ffName));
httpConnection.setRequestProperty("User-Agent", "Internet Explorer");
String sProperty = "bytes=" + nStartPos + "-";
//告诉服务器下载的这个文件从nStartPos字节开始传
httpConnection.setRequestProperty("RANGE", sProperty);
InputStream input = httpConnection.getInputStream();

byte[] b = new byte[1];

int nRead = 0
while ((nRead=input.read(b))!=-1){
oSavedFile.write(b, 0, nRead);
bw.write(b,0,nRead);
}

下载的文件大小大概为134字节,全部下载完后都是1KB,无法打开
下载地址:http://111.4.118.51:12001/ruif/getappincrement?synctime=20140906
展开
 我来答
墙上的小鸟
2014-09-18 · 超过33用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:62.4万
展开全部
你先得从头里面读取文件大小啊,然后你再设置需要下载文件的Range啊,再者byte[]这要设置带磨成1啊,这是一个亏行枝字节,不是1k,设置大一销敏些,别太小了,要不你用buffer就没有意义了
追问
我查了下content-length为16,我用httpConnection.getInputStream()来传输,input.avalilable大小也为16字节,这样就导致了所有很小的文件全部设置大小为16字节了,我甚至用byte[1]设置下载大小,用read函数,这样都无法避免但是我用浏览器下载后发下压缩包大小为700多字节,占用空间大小为4KB,我设置的RANGE为0
追答
Range的意思是分块下载,意思是如果你采取多线程下载的话,可以将每个线程设置为从n-m同时写入一个文件
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式