java 通過一個url下載網上文件


1.基本流程
 
當我們想要下載網站上的某個資源時,我們會獲取一個url,它是服務器定位資源的一個描述,下載的過程有如下幾步:
 
(1)客戶端發起一個url請求,獲取連接對象。
 
(2)服務器解析url,並且將指定的資源返回一個輸入流給客戶。
 
(3)建立存儲的目錄以及保存的文件名。
 
(4)輸出了寫數據。
 
(5)關閉輸入流和輸出流。
 
 
 
2.實現代碼的方法
/**

     * 從網絡Url中下載文件

     * @param urlStr

     * @param fileName

     * @param savePath

     * @throws IOException

     */

    public static void  downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{

        URL url = new URL(urlStr); 

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

                //設置超時間為3秒

        conn.setConnectTimeout(3*1000);

        //防止屏蔽程序抓取而返回403錯誤

        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

 

        //得到輸入流

        InputStream inputStream = conn.getInputStream(); 

        //獲取自己數組

        byte[] getData = readInputStream(inputStream);   

 

        //文件保存位置

        File saveDir = new File(savePath);

        if(!saveDir.exists()){

            saveDir.mkdir();

        }

        File file = new File(saveDir+File.separator+fileName);   

        FileOutputStream fos = new FileOutputStream(file);    

        fos.write(getData);

        if(fos!=null){

            fos.close(); 

        }

        if(inputStream!=null){

            inputStream.close();

        }

 

 

        System.out.println("info:"+url+" download success");

 

    }

 

 

 

    /**

     * 從輸入流中獲取字節數組

     * @param inputStream

     * @return

     * @throws IOException

     */

    public static byte[] readInputStream(InputStream inputStream) throws IOException { 

        byte[] buffer = new byte[1024]; 

        int len = 0; 

        ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

        while((len = inputStream.read(buffer)) != -1) { 

            bos.write(buffer, 0, len); 

        } 

        bos.close(); 

        return bos.toByteArray(); 

    } 

 

    public static void main(String[] args) {

        try{

            downLoadFromUrl("http://101.95.48.97:8005/res/upload/interface/apptutorials/manualstypeico/6f83ce8f-0da5-49b3-bac8-fd5fc67d2725.png",

                    "百度.jpg","d:/resource/images/diaodiao/country/");

        }catch (Exception e) {

            // TODO: handle exception

        }

    }

轉自:https://www.cnblogs.com/songsu/p/11307097.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM