自己写个下载的工具玩,关键部分是java.net.URL的openStream()方法得到流再写到本地(请问大家是怎么实现的?)
但是不知道怎么在下载之前得到文件的大小?哪位大哥给点提示,感激不尽!小弟头次发帖,没分可送,各位见谅。。

解决方案 »

  1.   

    谢谢楼上的回答,您可以说得再具体些吗?header在哪里得到?谢谢!
      

  2.   

    HttpURLConnection uc = ...................;
    uc.getHeaderField("Content-Length")或直接
    uc.getContentLength()
      

  3.   

    header不是万能的.就向ls说的一样,不时所有服务器都返回header的....所以只能下下来才可以保证知道大小.
      

  4.   

    汗..上面写错了.是不是所有header都有大小信息的....
      

  5.   

    感谢 江渚渔樵
    同时感谢上面发言的各位。我试了下用江渚渔樵说的可以,但是好像不能得到ftp协议的长度
    从网上随便找了几个ftp下的文件试了试,长度返回都是-1,是不是ftp不能如此这般得到长度呀?ps 我的一点体会:getContentLength()返回值是int,我还怕文件长度太长(>2G)用这个方法会得不到正确的长度值,结果试了几个大文件,返回都是-1,而且用getHeaderField("Content-Length")也是-1,是否可以由此推出>2G的东西头文件里直接写-1???
      

  6.   

    ftp协议么?我以为是http呢..汗.
    ftp应该是肯定可以获得长度的...不过我只做过http的...
      

  7.   

    我是指网上有些下载资源是ftp://.....而不是http://......这种的,我在迅雷上随便找了几个ftp的,用此种方法得不到长度,不知是偶然还是必然。