关于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();
...全文
85 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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一下吧
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告