`

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 中InputStream,String,File之间的相互转化对比

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

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

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

    文件转换(inputString)

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

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

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

    String Image之间相互转化

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

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

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

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

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

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

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

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

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

    io类之间继承关系的图片

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

    使用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