您的位置:首页 > 其它

如何做一个简单的下载软件

2018-01-20 11:30 453 查看
 建一个Class,用于保存下载任务信息

代码如下

package myproject02;

        /*

         * 保存一个下载任务的信息

         */

public class download {

    //记录4项信息

    private String url ;//下载文件的地址

    private long pos;//已经下载的字节数

    private long fileSize;//文件总大小

    private String fileName;//保存在本地的文件名

    public download(String url,String fileName) {

        this.url=url;

        this.fileName=fileName;

    }

    public String getUrl() {

        return url;

    }

    public void setUrl(String url) {

        this.url = url;

    }

    public long getPos() {

        return pos;

    }

    public void setPos(long pos) {

        this.pos = pos;

    }

    public long getFileSize() {

        return fileSize;

    }

    public void setFileSize(long fileSize) {

        this.fileSize = fileSize;

    }

    public String getFileName() {

        return fileName;

    }

    public void setFileName(String fileName) {

        this.fileName = fileName;

    }

    

}

第二部,再创建一个类,用于下载,代码如下

package myproject02;

import java.io.InputStream;

import java.io.RandomAccessFile;

import java.net.HttpURLConnection;

import java.net.URL;

/*

 * 断点续传测试

 */

public class TestDownload {

    public static void main(String[] args) {

        /*

         * 1.创建下载任务,download实例

         * 2.根据任务中的下载地址打开网络连接,获取对应的输入流

         * 3.创建任务中保存在本地的文件的输出流

         * 4.进行读写操作

         * 5.关闭流

         */

        try {

            //1

        download info = new download(

                    "http://www.shipinzhuanhuan.cn/cad/download-cadconvertor.html"

                    ,

                    "java_1_7.zip"

                    );/*输入想要下载文件的地址,就可以下载了*/

        //2 java.net.URL

        URL url = new URL(info.getUrl()); //给定网络地址

        //通过地址打开网络连接

        HttpURLConnection conn =(HttpURLConnection)url.openConnection();

        /*

         * 获取下载文件的大小

         */

        long totalSize=Long.parseLong(conn.getHeaderField("CONTENT-LENGTH"));

        info.setFileSize(totalSize);

        conn.disconnect();//与服务器断开

        //再次连接

        conn=(HttpURLConnection)url.openConnection();

        

        String prop ="bytes=" +info.getPos()+"-";

        //通过连接设置参数,通知服务器从什么地方开始读

        conn.setRequestProperty("RANGE",prop);

        //打开输入流开始读取文件

        InputStream in = conn.getInputStream();

        //将任务中记录的本地文件作为写出的目标文件

        RandomAccessFile raf= new RandomAccessFile(info.getFileName(),"rw");

        //服务器seek的位置就是我们写的位置

        raf.seek(info.getPos());

        //创建一个缓冲区

        byte[] buffer =new byte[1024*10];//10K缓冲区

        int sum =-1;//记录读取的字节数

        /*

         * 进行下载操作

         * 输入流读取数据

         */

        while((sum=in.read(buffer))>0) {

            raf.write(buffer,0,sum);

            //记录当前下载的字节数

            info.setPos(info.getPos()+sum);

            System.out.println(info.getPos());

            

            

        }

        raf.close();

        in.close();

        conn.disconnect();//关闭和服务器的连接

        

        } catch (Exception e) {

            

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  创建下载文件
相关文章推荐