流文件_從網絡中獲取文件


以前在做流操作的時候只要獲取本地的文件,今天遇到這樣的一個問題,剛開始還不會做,后面了解了一下其實還是容易的,主要他是通過獲取到

網絡中的數據流。而這一點主要就是獲取請求的一個過程,將獲取的請求轉為文件輸入流就ok,其他的很本地獲取都是一樣的

從網絡中獲取文件

  

package com.mendale.test;
import java.io.ByteArrayOutputStream;  
import java.io.File;  
import java.io.FileOutputStream;  
import java.io.InputStream;  
import java.net.HttpURLConnection;  
import java.net.URL;  
/** 
 * @說明 從網絡獲取圖片到本地 
 * @author yaobo
 * @version 1.0 
 * @since 
 */  
public class GetImage {  
    /** 
     * 測試 
     * @param args 
     */  
    public static void main(String[] args) {  
        String url = "http://192.168.172.169:9080/hr/employee/2016/10/40282c29581999eb015819a525230109_200_200.jpg";  
        byte[] btImg = getImageFromNetByUrl(url);  
        if(null != btImg && btImg.length > 0){  
            System.out.println("讀取到:" + btImg.length + " 字節");  
            String fileName = "person.jpg";  
            writeImageToDisk(btImg, fileName);  
        }else{  
            System.out.println("沒有從該連接獲得內容");  
        }  
    }  
    /** 
     * 將圖片寫入到磁盤 
     * @param img 圖片數據流
     * @param fileName 文件保存時的名稱 
     */  
    public static void writeImageToDisk(byte[] img, String fileName){  
        try {  
            File file = new File("C:\\" + fileName);  
            FileOutputStream fops = new FileOutputStream(file);  
            fops.write(img);  
            fops.flush();  
            fops.close();  
            System.out.println("圖片已經寫入到C盤");  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
    /** 
     * 根據地址獲得數據的字節流 
     * @param strUrl 網絡連接地址 
     * @return 
     */  
    public static byte[] getImageFromNetByUrl(String strUrl){  
        try {  
            URL url = new URL(strUrl);  
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
            conn.setRequestMethod("GET");  
            conn.setConnectTimeout(5 * 1000);  
            InputStream inStream = conn.getInputStream();//通過輸入流獲取圖片數據  
            byte[] btImg = readInputStream(inStream);//得到圖片的二進制數據  
            return btImg;  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return null;  
    }  
    /** 
     * 從輸入流中獲取數據 
     * @param inStream 輸入流 
     * @return 
     * @throws Exception 
     */  
    public static byte[] readInputStream(InputStream inStream) throws Exception{  
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
        byte[] buffer = new byte[1024];  
        int len = 0;  
        while( (len=inStream.read(buffer)) != -1 ){  
            outStream.write(buffer, 0, len);  
        }  
        inStream.close();  
        return outStream.toByteArray();  
    }  
}

 


免責聲明!

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



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