关于URLConnetion 下载ZIP文件的问题?

wbw88 2004-10-26 12:13:17
我用URLConnetion从网站上下载一个ZIP压缩文件(这个ZIP文件是好的),但下载回来后,用WINZIP解压出错。
错为:missing 6 bytes in zip file
但是我看了一下,下载回来的文件大小和原来的大小是一样的。
谢谢。
代码如下:
URL url = new URL(RDV_BOOTSTRAP);
URLConnection urlc = url.openConnection();
inp = urlc.getInputStream();
BufferedReader l = new BufferedReader(new InputStreamReader(inp));
String s;
StringBuffer sb = new StringBuffer();
File tempFile = new File(".\\temp.zip");
if (tempFile.exists()) {
tempFile.delete();
}
tempFile.createNewFile();
RandomAccessFile raf = new RandomAccessFile(tempFile, "rw");

while ( (s = l.readLine()) != null) {
sb.append(s);
sb.append("\n");
}
raf.write(sb.toString().getBytes());

raf.close();
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bluecatr 2004-10-26
  • 打赏
  • 举报
回复
下载zip这样的二进制大文件,要用DataInputStream,主要的对于大文件还要分块传输,每块一定大小的字节,最后一次单独计算传输。

你显然是因为用了BufferedReader的原因,没有下载完整的zip文件
gjd111686 2004-10-26
  • 打赏
  • 举报
回复
用JS下载试一下.
<script>
function DownURL(strRemoteURL,strLocalURL)
{
try
{
var xmlHTTP=new ActiveXObject("Microsoft.XMLHTTP");
xmlHTTP.open("Get",strRemoteURL,false);
xmlHTTP.send();
var adodbStream=new ActiveXObject("ADODB.Stream");
adodbStream.Type=1;//1=adTypeBinary
adodbStream.Open();
adodbStream.write(xmlHTTP.responseBody);
adodbStream.SaveToFile(strLocalURL,2);
adodbStream.Close();
adodbStream=null;
xmlHTTP=null;
//OpenFile(strLocalURL);
}
catch(e)
{
window.confirm("下载URL出错!");
}
//window.confirm("下载完成.");
}
</script>
webuilder 2004-10-26
  • 打赏
  • 举报
回复
下载二进制的文件不要使用readLine,请用InputStream和OutputStream
xuyang821225 2004-10-26
  • 打赏
  • 举报
回复
这就不清楚了,~~~帮UP一下吧

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧