zoukankan      html  css  js  c++  java
  • 流文件_从网络中获取文件

    以前在做流操作的时候只要获取本地的文件,今天遇到这样的一个问题,刚开始还不会做,后面了解了一下其实还是容易的,主要他是通过获取到

    网络中的数据流。而这一点主要就是获取请求的一个过程,将获取的请求转为文件输入流就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();  
        }  
    }
  • 相关阅读:
    WSL 修改默认登录用户为root
    WSL ssh服务自启动
    odoo 获取model的所有字段
    C++类型父类与子类的转换--dynamic_cast(转)
    开源软件/镜像库
    C/C++编译器gcc的windows版本MinGW-w64安装教程(转)
    msys2 环境搭建
    Windows下利用Cygwin搭建C/C++开发环境GCC(转)
    模板类中子类访问父类中的成员需要通过this指针
    C++ 构造函数与this指针
  • 原文地址:https://www.cnblogs.com/yaobolove/p/6040612.html
Copyright © 2011-2022 走看看