您的位置:首页 > 编程语言 > Java开发

一个java实现的简单文件下载程序

2012-02-09 16:35 856 查看
import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

public class ReadInternetFile

{

    public ReadInternetFile()

    {

        // TODO Auto-generated constructor stub

    }

    public URL getUrl()

    {

        return this.url;

    }

    public void setUrl() throws MalformedURLException

    {

        String url = null;

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        try

        {

            url = br.readLine();

            this.url = new URL(url); 

        }

        catch (IOException e)

        {

            e.printStackTrace();

        }

    }

    public void setFileSaveName(URL url)

    {

        String file = url.getFile();

        this.fileName = file.substring(file.lastIndexOf("/") + 1);

    }

    private String getFileName()

    {

         return this.fileName;

    }

    private URL url = null;

    private static final String fileSavePath = "E:\\myftp\\download\\";

    private String fileName = null;

    

    public static void main(String []args)

    {

        Long start = System.currentTimeMillis();

        System.out.println("please input the url of the file:");

        ReadInternetFile fileReader = new ReadInternetFile();

        try

        {

            fileReader.setUrl();

            URL fileUrl = fileReader.getUrl();

            fileReader.setFileSaveName(fileUrl);

            

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

            conn.setConnectTimeout(5000);

            DataInputStream din = new DataInputStream(conn.getInputStream());

            String savedFileName = fileReader.getFileName();

            DataOutputStream dout = new DataOutputStream(new FileOutputStream(fileSavePath + savedFileName));

            

            BufferedInputStream bin = new BufferedInputStream(din,4096);

            BufferedOutputStream bout = new BufferedOutputStream(dout);

            byte [] buffer = new byte[4*1024];

            int count = 0;

            while ((count = bin.read(buffer)) > 0)

            {

                //如果使用bout.write(buffer)方法图片会失真,而且下载的速度快慢与否与网络环境有很大的关系,

//                dout.write(buffer, 0, count);

                bout.write(buffer,0,count);

            }

            bout.close();

            bin.close();

            conn.disconnect();

            System.out.println("file " + savedFileName + " successfully downloaded !");

            System.out.println("Time used:" + (System.currentTimeMillis() - start));

        }

        catch (MalformedURLException e)

        {

            e.printStackTrace();

        }

        catch (IOException e)

        {

            e.printStackTrace();

        }

    }

   

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