java,http下载文件

Python012

java,http下载文件,第1张

http是流传输,一次请求中你是不能将流截断的,如果想做到你说的只有两种形式:1、就是你使用的方式,多段读取(其实就是断点续传的原理),多个请求,每个请求请求一部分,如果你觉得效率低可以从两方面优化:(1)不要用URLConnecion,而使用HttpClient之类的工具包进行请求(2)使用多线程并发请求,其实就是断点续传了,迅雷就是几个线程一起下嘛2、只请求一次,请求全部的,将全部流缓存到内存中(byte[]),然后根据你的需要分段截取,写入文件

import java.net.*

import java.io.*

public class URLConnectionDemo{

    public static void main(String[] args)throws Exception{

        URL url = new URL("http://www.scp.edu.cn/pantoschoolzz/BG/Bord/Message/DownloadMessageAttachment.aspx?ID=215")

        URLConnection uc = url.openConnection()

        String fileName = uc.getHeaderField(6)

        fileName = URLDecoder.decode(fileName.substring(fileName.indexOf("filename=")+9),"UTF-8")

        System.out.println("文件名为:"+fileName)

        System.out.println("文件大小:"+(uc.getContentLength()/1024)+"KB")

        String path = "D:"+File.separator+fileName

        FileOutputStream os = new FileOutputStream(path)

        InputStream is = uc.getInputStream()

        byte[] b = new byte[1024]

        int len = 0

        while((len=is.read(b))!=-1){

            os.write(b,0,len)

        }

        os.close()

        is.close()

        System.out.println("下载成功,文件保存在:"+path)

    }

}

//给你一个下载的例子吧,仅供参考。