`

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[]
,这中间有什么区别,除了内存上消耗外。学习下。

相关推荐

    Drawable Bitmap InputStream byte[]相互转化工具类

    在Android开发中,处理图像数据时,我们经常需要在Drawable、Bitmap、InputStream和byte数组之间进行转换。这些类型的转换在不同的场景下具有重要的作用,例如从网络加载图片、存储图片到本地或者显示在ImageView上...

    Blob、InputStream、byte 互转

    本文将详细介绍如何实现`Blob`、`InputStream`、`byte[]`之间的相互转换,并提供具体的代码示例。 #### Blob与byte[]之间的转换 1. **Blob转byte[]** ```java private byte[] blobToBytes(Blob blob) { ...

    java socket学习工具_网页形式.rar

    描述中提到的“byte和inputstream相互转换”,这通常涉及到二进制数据的处理。在Java中,`InputStream`可以读取字节流,但不能直接与字节数组操作。为了将`InputStream`中的数据转换为字节数组,我们可以使用`...

    byte与各类型之间的转化

    1. **int、char、double与byte的相互转换** - **int到byte[]的转换** ```java public static byte[] intToByte(int number) { int temp = number; byte[] b = new byte[4]; for (int i = b.length - 1; i > -...

    Java 类型相互转换byte[]类型,Blob类型详细介绍

    本篇文章将详细讲解如何在Java中进行`byte[]`与`Blob`类型的相互转换。 首先,`byte[]`是Java中的基本数据类型,用于存储和操作二进制数据,如图像、音频或任何其他非文本文件。而`Blob`是Java SQL API中的一个接口...

    java 中InputStream,String,File之间的相互转化对比

    总结来说,Java中InputStream、String和File的相互转化是编程中常见的操作,理解并掌握这些转换方法对于提升开发效率和代码质量至关重要。在进行转换时,要结合具体场景,选择合适的方法,同时注意性能优化和资源...

    文件转换(inputString)

    对于提供的文件"String与InputStream相互转换 - hanqunfeng的专栏 - CSDN博客_files"和"String与InputStream相互转换 - hanqunfeng的专栏 - CSDN博客.html",它们可能是详细的教程或示例代码,可以帮助进一步学习和...

    Java实现文件和base64流的相互转换功能示例

    Java实现文件和base64流的相互转换功能示例 Java实现文件和base64流的相互转换功能是 Java 编程中的一项重要技术,涉及到文件读取、Base64 编码和解码等操作。本文将详细介绍 Java 实现文件和 base64 流的相互转换...

    String Image之间相互转化

    在Java编程中,将字符串(String)与图像(Image)相互转换是一项常见的需求,特别是在处理用户输入、数据存储或显示图形信息时。这篇博文将探讨如何在Java中实现这一过程,主要涉及`Image`对象与`String`对象之间的转换...

    android用base64实现文件与string相互转换

    本篇文章将详细介绍如何在Android中使用Base64来实现文件与String之间的相互转换。 一、Base64编码原理 Base64是一种基于64个字符的编码方法,这些字符包括大小写字母、数字以及"+"和"/",还有一个用于填充的字符"=...

    Java 处理图片与base64 编码的相互转换的示例

    Java 处理图片与 base64 编码的相互转换的示例 Java 处理图片与 base64 编码的相互转换是 Java 编程中一个常见的需求。本文将介绍如何使用 Java 将图片转换为 base64 编码的字符串,并将 base64 编码的字符串转换回...

    Java实现字节流与图片的转化Java实用源码整理learns.

    在实际应用中,我们经常需要将字节流与各种类型的数据,如图片,进行相互转换。这个"Java实现字节流与图片的转化Java实用源码整理learn"资料包,很显然,提供了关于如何在Java中进行这种转化的源代码实例。 首先,...

    io类之间继承关系的图片

    标题提到的"io类之间继承关系的图片"正是为了帮助开发者理解这些类之间的层次结构和相互关联。下面我们将详细探讨Java IO类库的继承关系及其重要知识点。 首先,Java的IO体系主要分为两大类:字符流(Character ...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    为了解决这一问题,我们需要采用一种方法来安全地实现这两种类型的相互转换。 #### 二、解决方案 为了解决 WebLogic 下 Oracle CLOB 类型转换的问题,可以通过反射机制来调用 `weblogic.jdbc.wrapper.Clob_oracle_...

    使用socket在andorid中相互传送文件

    文件封装是将文件内容转化为数据流的过程,以便通过网络通道传输。在Android中,我们可以使用`FileInputStream`和`FileOutputStream`来读取和写入文件。首先,我们需要创建一个`FileInputStream`实例,读取要发送的...

    Java输入数据流详解

    Java IO包提供了丰富的输入输出类,不仅限于字节流和字符流,还包括对象流(用于序列化和反序列化)、转换流(将字节流与字符流相互转换)以及过滤流(提供额外的功能,如缓冲、字符编码转换等)。这些类和接口共同...

    io流的全部课件io流是java非常重要的一部分,所以给大家分享一下

    Java的IO流分为四大类:字节流(Byte Stream)和字符流(Character Stream),以及输入流(Input Stream)和输出流(Output Stream)。字节流处理单个字节的数据,而字符流处理Unicode字符集中的字符。输入流负责从...

    Java IO

    例如,为了读取文件中的数据,可能需要了解 InputStream、Reader 等多个类及其相互之间的关系。 #### 二、Java 内部字符表示 Java 采用了 Unicode 作为其内部字符集标准,这是一项重要的设计决策。Unicode 使用 16...

    io 流 ppt 有问题 www.willvc.com.cn 能联系到我

    - **InputStream**的方法包括`read()`,`read(byte[])`,`read(byte[], int, int)`,`close()`,`available()`,`skip(long)`,`markSupported()`,`mark(int)`和`reset()`。`read()`方法用于读取字节,`close()`...

Global site tag (gtag.js) - Google Analytics