java 从InputStream 获取字节数组

Java 中,如何从InputStream 读取字节数组呢?

方式一:

Java代码  

  1. /*** 
  2.      * Has been tested 
  3.      *  
  4.      * @param in 
  5.      * @return 
  6.      * @throws IOException 
  7.      */  
  8.     public static byte[] readBytes(InputStream in) throws IOException {  
  9.         byte[] temp = new byte[in.available()];  
  10.         byte[] result = new byte[0];  
  11.         int size = 0;  
  12.         while ((size = in.read(temp)) != -1) {  
  13.             byte[] readBytes = new byte[size];  
  14.             System.arraycopy(temp, 0, readBytes, 0, size);  
  15.             result = SystemUtil.mergeArray(result,readBytes);  
  16.         }  
  17.         return result;  
  18.     }  

 

 

方式二:

Java代码  

  1. public static byte[] readBytes3(InputStream in) throws IOException {  
  2.         BufferedInputStream bufin = new BufferedInputStream(in);  
  3.         int buffSize = BUFFSIZE_1024;  
  4.         ByteArrayOutputStream out = new ByteArrayOutputStream(buffSize);  
  5.   
  6.         // System.out.println("Available bytes:" + in.available());  
  7.   
  8.         byte[] temp = new byte[buffSize];  
  9.         int size = 0;  
  10.         while ((size = bufin.read(temp)) != -1) {  
  11.             out.write(temp, 0, size);  
  12.         }  
  13.         bufin.close();  
  14.   
  15.         byte[] content = out.toByteArray();  
  16.         return content;  
  17.     }  

 依赖的函数:

Java代码  

  1. /*** 
  2.      * 合并字节数组 
  3.      * @param a 
  4.      * @return 
  5.      */  
  6.     public static byte[] mergeArray(byte[]... a) {  
  7.         // 合并完之后数组的总长度  
  8.         int index = 0;  
  9.         int sum = 0;  
  10.         for (int i = 0; i < a.length; i++) {  
  11.             sum = sum + a[i].length;  
  12.         }  
  13.         byte[] result = new byte[sum];  
  14.         for (int i = 0; i < a.length; i++) {  
  15.             int lengthOne = a[i].length;  
  16.             if(lengthOne==0){  
  17.                 continue;  
  18.             }  
  19.             // 拷贝数组  
  20.             System.arraycopy(a[i], 0, result, index, lengthOne);  
  21.             index = index + lengthOne;  
  22.         }  
  23.         return result;  
  24.     }  

 

时间: 2024-11-08 19:36:36

java 从InputStream 获取字节数组的相关文章

java中字符串转换为字节数组请问用什么方法,字符串返回字节数组怎么做?

问题描述 java中字符串转换为字节数组请问用什么方法,字符串返回字节数组怎么做? java中字符串转换为字节数组请问用什么方法,字符串返回字节数组怎么做? 解决方案 http://blog.csdn.net/shuaihj/article/details/7478773http://blog.csdn.net/abin_gha/article/details/6317850 解决方案二: java中String类有getBytes方法,可以将字符串转成字节数组.字节数组可以直接写入到输出流中,

java下字符串和字节数组如何转换?

1.字节数组转换为字符串 byte[] byBuffer = new byte[20];... ...String strRead = new String(byBuffer);strRead = String.copyValueOf(strRead.toCharArray(), 0, byBuffer.length]); 2.字符串转换成字节数组 byte[] byBuffer = new byte[200];String strInput="abcdefg";byBuffer= s

详解Java中ByteArray字节数组的输入输出流的用法_java

ByteArrayInputStream 介绍ByteArrayInputStream 是字节数组输入流.它继承于InputStream. 它包含一个内部缓冲区,该缓冲区包含从流中读取的字节:通俗点说,它的内部缓冲区就是一个字节数组,而ByteArrayInputStream本质就是通过字节数组来实现的. 我们都知道,InputStream通过read()向外提供接口,供它们来读取字节数据:而ByteArrayInputStream 的内部额外的定义了一个计数器,它被用来跟踪 read() 方法

java 把二进制文件转化为字节数组

在Java 中,如何把二进制文件(如图片,ssl证书 )转化为字节数组呢? 代码如下: Java代码   @org.junit.Test       public void test055() throws IOException {           File inFile = new File("d:\\Chrysanthemum.jpg");           FileInputStream fileInputStream = new FileInputStream(inFi

与字节数组相关的IO操作

总结一下与字节数组相关的IO操作. 关于 把十六进制的位串转化为byte数组,请参阅 http://hw1287789687.iteye.com/blog/1882644   (1)从InputStream 读取字节数组 方式一: Java代码   /***       * Has been tested       *        * @param in       * @return       * @throws IOException       */       public sta

java从输入流中获取数据并返回字节数组示例_Android

复制代码 代码如下: import java.io.ByteArrayOutputStream;import java.io.InputStream;//从输入流中获取数据并以字节数组返回public class StreamTool {    /**     * 从输入流获取数据     * @param inputStream     * @return     * @throws Exception     */    public static byte[] readInputStrea

java字节数组转字符串

问题描述 java字节数组转字符串 我有一个data[30] 的字节数组,这里面有字符信息,但是不全是,我如何能只取出其中的字符串. 解决方案 那你要给字符串下个定义,比如说从哪个字节开始,或者有什么特征,或者它仅由哪些字符构成.如果你能明确这些,可以用诸如正则表达式,subString indexOf等方式获取.

求助) Java中如何获取数组中的有效数据长度

问题描述 Java中如何获取数组中的有效数据长度?请各位大虾指点一二,谢谢!如:bytearr[]=newbyte[100];现在我向arr中输入任意数(-128~127),请问如何知道我已经输入多少个了呢? 解决方案 解决方案二:for循环呗遍历一次就行.解决方案三:使用一个变量如count记录,输入一个就把count加1.解决方案四:遍历吧解决方案五:要是那样存数,你不如用Vector或其它的,那个容易找,解决方案六:遍历是可以,问题是该用什么做基准值呢?看样子只能用动态数组了解决方案七:用

java mina框架传输10k左右的字节数组的问题

问题描述 java mina框架传输10k左右的字节数组的问题 我用mina传递一个10k左右的字节数组,格式是自己定位的,里面包含报文长度,文件和校验字节,客户端和服务端都分别设置了readBufferSize为10240,但是客户端发往服务端时,每次只能接受1k多一点,要循环接收9次左右,效率太低了,设置了readBufferSize为10240,目的就是为了 一次接受完毕的,但是要循环接受好多次,请问大神这是为什么啊? 解决方案 一般来说,sendbuf 和 recvbuf代表发送和接收缓