file 从InputStream读取byte[]示例

分类专栏: java基础
 
  1. public static byte[] getStreamBytes(InputStream is) throws Exception {
  2. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  3. byte[] buffer = new byte[1024];
  4. int len = 0;
  5. while ((len = is.read(buffer)) != -1) {
  6. baos.write(buffer, 0, len);
  7. }
  8. byte[] b = baos.toByteArray();
  9. is.close();
  10. baos.close();
  11. return b;
  12. }
 
  1. default byte[] readFileBytes(InputStream is){
  2. byte[] data = null;
  3. try {
  4. if(is.available()==0){//严谨起见,一定要加上这个判断,不要返回data[]长度为0的数组指针
  5. return data;
  6. }
  7. data = new byte[is.available()];
  8. is.read(data);
  9. is.close();
  10. return data;
  11. } catch (IOException e) {
  12. LogCore.BASE.error("readFileBytes, err", e);
  13. return data;
  14. }
  15. }
    1. 图片上传功能是我们web里面经常用到的,获得的方式也有很多种,这里我用的是request.getInputStream()获取文件流的方式。想要获取文件流有两种方式,附上代码

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      int length = request.getContentLength();//获取请求参数长度。
      byte[] bytes = new byte[length];//定义数组,长度为请求参数的长度
      DataInputStream dis = new DataInputStream(request.getInputStream);//获取请求内容,转成数据输入流
      int readcount = 0;//定义输入流读取数
      while(readcount < length){
       int aa= dis.read(bytes,readcount,length); //读取输入流,放入bytes数组,返回每次读取的数量
       readcount = aa + readcount; //下一次的读取开始从readcount开始
      }
      //读完之后bytes就是输入流的字节数组,将其转为字符串就能看到
      String bb = new String(bytes,"UTF-8");

      上面这种是利用读取输入流的方式,也可以用写入字节输入流的方式获取,就不需要获取请求长度了

      1
      2
      3
      4
      5
      6
      7
      8
      9
      DataInputStream dis = new DataInputStream(request.getInputStream());
      ByteArrayOutputStream baot = new ByteArrayOutputStream();
      byte[] bytes = new byte[1024]; //定义一个数组 用来读取
      int n = 0;//每次读取输入流的量
      while((n=dis.read(bytes))!=-1){
       baot.write(bytes); //将读取的字节流写入字节输出流
      }
      byte[] outbyte = boat.toByteArray();//将字节输出流转为自己数组。
      String bb = new String(outbyte,"UTF-8");

file 从InputStream读取byte[]示例的更多相关文章

  1. byte数组和File,InputStream互转

    1.将File.FileInputStream 转换为byte数组: File file = new File("file.txt"); InputStream input = n ...

  2. java 中 byte[]、File、InputStream 互相转换

    1.将File.FileInputStream 转换为byte数组: File file = new File("test.txt"); InputStream input = n ...

  3. 【java】java 中 byte[]、File、InputStream 互相转换

    ========================================================================= 使用过程中,一定要注意close()掉各个读写流!! ...

  4. byte[],File和InputStream的相互转换

    File.FileInputStream 转换为byte[] File file = new File("test.txt"); InputStream input = new F ...

  5. 【Spring】获取资源文件+从File+从InputStream对象获取正文数据

    1.获取资源文件或者获取文本文件等,可以通过Spring的Resource的方式获取 2.仅有File对象即可获取正文数据 3.仅有InputStream即可获取正文数据 package com.sx ...

  6. File相关的读取和写入以及复制

    import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileI ...

  7. InputStream读取文件到string后OutputStream到文件,按String和Bytes拷贝

    http://www.iteye.com/problems/72150 写了一段代码 大体是 InputStream读取文件到string后OutputStream到文件 遇到的问题为TXT文件大小格 ...

  8. File根据inputstream复制文件到临时目录,使用完之后删除

    项目中有这个需求: 1)上传文件通过公司平台的校验,校验成功后,通过接口,返回文件流: 2)我们根据这个文件流进行操作.这里,先将文件流复制文件到项目临时目录WEB-INF/temp;文件使用完毕,删 ...

  9. InputStream 读取中文乱码 扩展

    对于InputStream读取中文乱码,下面这段话给出了很好的解释,以及后续编码上的扩展. BufferedInputStream和BufferedOutputStream是过滤流,需要使用已存在的节 ...

随机推荐

  1. Arcgis CreateFishnet工具,生成到FileGDB中要素类的格网大小不一致

    我的第一篇博客!哈哈 最近在做一些关于创建渔网的工作,发现一些问题,做个总结. 1.问题描述:如图1,设置好渔网的必要参数,输出目录为gdb里的矢量图层,(行列数比较大,渔网的地理范围较小),输出的格 ...

  2. 结对编程(-java-实现)

    一 .Github项目地址:https://github.com/mushan520/Four-fundamental-rules-java.git                           ...

  3. weblogic删除域

    彻底删除weblogic域的方法: 例如:删除域名为:fm_ump的域 第一步,删除域注册记录: [bofm@UAT02-BIZ-ZJCG-AP-008 Middleware]$ cd /home/s ...

  4. spark2.4.2 源码编译

    基于Maven的构建是Apache Spark的参考构建.使用Maven构建Spark需要Maven 3.5.4和Java 8.请注意,从Spark 2.2.0开始,对Java 7的支持已被删除. 包 ...

  5. Spring Cloud Netflix之Eureka Clients服务提供者

    之前一章我们介绍了如何搭建Eureka Server,这一章,我们介绍如何搭建服务提供者. Eureka Clients介绍 服务的提供者,通过发送REST请求,将自己注册到注册中心(在高可用注册中心 ...

  6. SpringBoot使用Swagger2构建API文档

    后端开发中经常需要对移动客户端提供RESTful API接口,在后期版本快速迭代的过程中,修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导 ...

  7. linux 进程通信之 守护进程

    守护进程(Daemon) Daemon(精灵)进程,是linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的时间.一般采用以d结尾的名字.从下面的进程信息可以看出, ...

  8. seq命令的使用

    标题:seq命令的使用 作用:seq命令用于以指定增量从首数开始打印数字到尾数,即产生从某个数到另外一个数之间的所有整数,并且可以对整数的格式.宽度.分割符号进行控制 语法: [1] seq [选项] ...

  9. Python Treelib 多叉树 数据结构 中文使用帮助文档

    树,对于计算机编程语言来说是一个重要的数据结构.它具有广泛的应用,比如文件系统的分层数据结构和机器学习中的一些算法.这里创建了treelib来提供Python中树数据结构的高效实现. 官方文档:htt ...

  10. Tkinter 鼠标键盘事件(二)

    一个Tkinter主要跑在mainloop进程里.Events可能来自多个地方,比如按键,鼠标,或是系统事件. Tkinter提供了丰富的方法来处理这些事件.对于每一个控件Widget,你都可以为其绑 ...