【文件下载时 如何取得该文件大小及当前读取位置】
主要是更新进度条用的,不知如何取得这些信息。
代码如下:
==================================================
try {
String urlname = "http://my.nbip.net/homepage/zhouB403/dp.jpg";
URL url = new URL(urlname);
URLConnection conn = url.openConnection();//获得该对象的连接
String filename = url.getFile();//获取整个url的名字
//分解出文件名,保存时用该名字保存 filename =
filename.substring(filename.lastIndexOf('/') + 1);
FileOutputStream out = new FileOutputStream("./updata/" + filename);
conn.setDoInput(true);//设置其属性为可读 InputStream inStream =
conn.getInputStream(); BufferedInputStream input = new
BufferedInputStream(inStream); byte[] b = new byte[1024]; int a = 0;
//把文件用字节读出并写入本地文件 while ((a = input.read(b, 0,
b.length)) != -1) { out.write(b, 0, a); }
out.flush();
input.close();
out.close();
} catch (Exception e) {
System.out.println(e);
}
System.out.println("ok");
问题点数:100、回复次数:7Top
1 楼onefox(一品狐)回复于 2005-04-03 21:00:32 得分 0
另外,有当前下载速度的话更好了。
不是是否有好用的第三方包?!
jspSmartUpload 这个不要Top
2 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-03 21:28:19 得分 0
用流的方法来读是没有办法在程序里得到对方的文件大小的
因为读的时候是以字符或者字节为单位的,来一个收一个,直到读到的EOF为止
所以我个人认为做不到Top
3 楼onefox(一品狐)回复于 2005-04-03 21:35:23 得分 0
是啊, 我也知道流是线性访问的
我只是抛砖引玉。 我想做在线更新
我现在想到的方法是:
先读一个小一点的信息文件
里面包含文件升级文件包的大小
然后再…… 就是麻烦点Top
4 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-03 21:37:43 得分 50
我觉得一点都不麻烦啊
从根本上来看,流做不到一次获取对方文件信息,所以只能考虑变通的办法
你这样做不麻烦,有一个信息文件反而更容易管理需要下载的文件啊
Top
5 楼taglib(不懂就是不懂,别不懂装懂)回复于 2005-04-03 22:01:05 得分 50
URLConnection不是有个getContentLength() 方法么Top
6 楼onefox(一品狐)回复于 2005-04-03 22:13:02 得分 0
嗯, 我还是用自己的方法吧 谢谢!Top
7 楼Hodex(小何才露尖尖角)回复于 2005-04-03 22:26:08 得分 0
String urlname = "http://community.csdn.net/ADV/Images/csdn120x360.GIF";
URL url = new URL(urlname);
URLConnection conn = url.openConnection();//获得该对象的连接
System.out.println (conn.getContentLength());
____________________
16940
ok
Press any key to continue...
好久不见,不知现在.....
Top




