用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 展开
我试过用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 展开
展开全部
你先得从头里面读取文件大小啊,然后你再设置需要下载文件的Range啊,再者byte[]这要设置带磨成1啊,这是一个亏行枝字节,不是1k,设置大一销敏些,别太小了,要不你用buffer就没有意义了
追问
我查了下content-length为16,我用httpConnection.getInputStream()来传输,input.avalilable大小也为16字节,这样就导致了所有很小的文件全部设置大小为16字节了,我甚至用byte[1]设置下载大小,用read函数,这样都无法避免但是我用浏览器下载后发下压缩包大小为700多字节,占用空间大小为4KB,我设置的RANGE为0
追答
Range的意思是分块下载,意思是如果你采取多线程下载的话,可以将每个线程设置为从n-m同时写入一个文件
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询