`

byte[]和InputStream的相互转换

 
阅读更多
1:byte[]转换为InputStream
InputStream sbs = new ByteArrayInputStream(byte[] buf);

2:InputStream转换为InputStreambyte[]
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100]; //buff用于存放循环读取的临时数据
int rc = 0;
while ((rc = inStream.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
byte[] in_b = swapStream.toByteArray(); //in_b为转换之后的结果

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class ByteToInputStream {

	public static final InputStream byte2Input(byte[] buf) {
		return new ByteArrayInputStream(buf);
	}

	public static final byte[] input2byte(InputStream inStream)
			throws IOException {
		ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
		byte[] buff = new byte[100];
		int rc = 0;
		while ((rc = inStream.read(buff, 0, 100)) > 0) {
			swapStream.write(buff, 0, rc);
		}
		byte[] in2b = swapStream.toByteArray();
		return in2b;
	}

}

分享到:
评论
10 楼 Credo 2013-07-09  
哦哦,apache的io commons jar,忘记说了.
9 楼 Credo 2013-07-09  
public static byte[] toByteArray(InputStream input) throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        copy(input, output);
        return output.toByteArray();
    }

public static int copy(InputStream input, OutputStream output) throws IOException {
        long count = copyLarge(input, output);
        if (count > Integer.MAX_VALUE) {
            return -1;
        }
        return (int) count;
    }
8 楼 tv151579 2013-01-26  
受教了,解决了难题!正是我需要的...
7 楼 yuqihengsheng 2013-01-11  
解决了一个难题,跨系统传文件。。
6 楼 w87848608 2012-09-04  
请问,当InputStream过大,使用ByteArrayOutputStream进行byte转换,产生的内存溢出,有考虑过么
5 楼 javapub 2010-09-25  
不客气
4 楼 chyy001 2010-09-25  
谢谢,回答的正是我想要的。
3 楼 javapub 2010-09-25  
chyy001 写道
想知道在在什么场合用到这些装换,比如byte[] 为什么要用到这个,为什么不用int[]
,这中间有什么区别,除了内存上消耗外。学习下。

byte占一个字节,int占4个字节,即表示int类型的存储大小为4个字节,byte是最基础的存储类型,而int是用来标示整型的。

每一个字节占8位,所以最大表示数字是2的8次方。

--类型---------------------------------------字节------位数
--char----------------------------------------1--------8
--long---int----------------------------------4--------32
--int-----------------------------------------4--------32
--unsigned---long---int-----------------------4--------32
--unsigned---int------------------------------4--------32
--float---------------------------------------4---------32
--double--------------------------------------8--------64
--long---float--------------------------------8--------64
--long---double-------------------------------8--------64
*********************************************************************
--类型-------------------------------------最大数字
--char-----------------------
--long---int-------------------------------2147483647
--int--------------------------------------2147483647
--unsigned---long---int--------------------4294967295
--unsigned---int---------------------------4294967295
--float------------------------------------3.40282e+038
--double-----------------------------------1.79769e+308
--long---float-----------------------------1.79769e+308
--long---double----------------------------1.79769e+308-
2 楼 javapub 2010-09-25  
chyy001 写道
想知道在在什么场合用到这些装换,比如byte[] 为什么要用到这个,为什么不用int[]
,这中间有什么区别,除了内存上消耗外。学习下。

byte就是字节,是计算机存储信息的最基本单位,就是我们在硬盘上的字节(比特)。而我们的文件流最终也都是字节,所以文件流的读写自然都是和字节打交道的。在文件读写的根本就是对字节的读写。
1 楼 chyy001 2010-09-25  
想知道在在什么场合用到这些装换,比如byte[] 为什么要用到这个,为什么不用int[]
,这中间有什么区别,除了内存上消耗外。学习下。

相关推荐

Global site tag (gtag.js) - Google Analytics