博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
流文件_从网络中获取文件
阅读量:7123 次
发布时间:2019-06-28

本文共 2687 字,大约阅读时间需要 8 分钟。

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

网络中的数据流。而这一点主要就是获取请求的一个过程,将获取的请求转为文件输入流就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();      }  }

 

转载于:https://www.cnblogs.com/yaobolove/p/6040612.html

你可能感兴趣的文章
ROS机器人程序设计(原书第2版)2.2 理解ROS计算图级
查看>>
《破茧成蝶——用户体验设计师的成长之路》一1.3 用户体验设计的特征
查看>>
R语言数据挖掘2.2.4.3 R语言实现
查看>>
Predicate和Consumer接口– Java 8中java.util.function包下的接口
查看>>
《Dreamweaver CS6完美网页制作——基础、实例与技巧从入门到精通》——2.3 网页色彩搭配知识...
查看>>
企业上云实战分享
查看>>
SSM框架Web程序的流程(Spring SpringMVC Mybatis)
查看>>
阿里云人工智能识别篮球动作视频
查看>>
Ali Kernel introduction
查看>>
前端常见兼容问题系列5:¥符号在部分Android APP的WebView中不见了
查看>>
基于Reactjs实现webapp(加精)
查看>>
超强、超详细Redis数据库入门教程
查看>>
《C++语言基础》实践项目——多重继承
查看>>
京颐集团上云之路:如何助力中小型医疗行业信息化与全面上云?
查看>>
Python yield与实现
查看>>
mongodb一些使用技巧或注意事项记录
查看>>
C# 浅拷贝与深拷贝区别 解惑篇
查看>>
nested loop,merge join,hash join与子查询优化
查看>>
注册过程太痛苦,昵称起了一箩筐还是没有可用的,前端校验和后台查询不一致用户体验太差...
查看>>
Munin进阶使用
查看>>