`

java 从InputStream 获取字节数组

阅读更多

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

方式一:

/***
	 * Has been tested
	 * 
	 * @param in
	 * @return
	 * @throws IOException
	 */
	public static byte[] readBytes(InputStream in) throws IOException {
		byte[] temp = new byte[in.available()];
		byte[] result = new byte[0];
		int size = 0;
		while ((size = in.read(temp)) != -1) {
			byte[] readBytes = new byte[size];
			System.arraycopy(temp, 0, readBytes, 0, size);
			result = SystemUtil.mergeArray(result,readBytes);
		}
		return result;
	}

 

 

方式二:

public static byte[] readBytes3(InputStream in) throws IOException {
		BufferedInputStream bufin = new BufferedInputStream(in);
		int buffSize = BUFFSIZE_1024;
		ByteArrayOutputStream out = new ByteArrayOutputStream(buffSize);

		// System.out.println("Available bytes:" + in.available());

		byte[] temp = new byte[buffSize];
		int size = 0;
		while ((size = bufin.read(temp)) != -1) {
			out.write(temp, 0, size);
		}
		bufin.close();

		byte[] content = out.toByteArray();
		return content;
	}

 依赖的函数:

/***
	 * 合并字节数组
	 * @param a
	 * @return
	 */
	public static byte[] mergeArray(byte[]... a) {
		// 合并完之后数组的总长度
		int index = 0;
		int sum = 0;
		for (int i = 0; i < a.length; i++) {
			sum = sum + a[i].length;
		}
		byte[] result = new byte[sum];
		for (int i = 0; i < a.length; i++) {
			int lengthOne = a[i].length;
			if(lengthOne==0){
				continue;
			}
			// 拷贝数组
			System.arraycopy(a[i], 0, result, index, lengthOne);
			index = index + lengthOne;
		}
		return result;
	}

 

分享到:
评论

相关推荐

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

    //从输入流中获取数据并以字节数组返回public class StreamTool { /** * 从输入流获取数据 * @param inputStream * @return * @throws Exception */ public static byte[] readInputStream(InputStream ...

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

    ByteArrayInputStream是InputStream的子类,它允许我们将字节数组当作输入流来读取。内部有一个字节数组和一个位置计数器,用于跟踪当前读取的位置。创建一个ByteArrayInputStream时,需要提供一个字节数组作为其...

    Java实现字节流与图片的转化Java源码

    2. **读取字节**:调用InputStream的read()方法,将图片文件的每个字节读取到一个字节数组中。 3. **处理字节数组**:读取到的字节数组就是图片的二进制表示,可以根据需要进行传输或存储。 4. **关闭流**:在完成...

    iteye的技术博客集合

    - **Java 从 InputStream 获取字节数组**:这部分介绍了如何从 InputStream 中读取数据并转换为字节数组。 - **Java 获取 request 请求要素**:这部分内容介绍了 Servlet 中如何通过 HttpServletRequest 对象获取...

    Java实现字节流与图片的转化

    使用`FileInputStream`类读取图片文件,然后将其内容转换为字节数组。以下是一个简单的示例: ```java File imageFile = new File("1.jpg"); FileInputStream fis = new FileInputStream(imageFile); byte[] ...

    Java实现inputstream流的复制代码实例

    3. 使用 ByteArrayInputStream 将字节数组转换回 InputStream 对象。 示例代码 下面是克隆 InputStream 对象的示例代码: ```java public class StreamOperateUtil { public static void main(String[] args) ...

    java.io.Reader 和 java.io.InputStream 的区别

    2. **`ByteArrayInputStream`**:从内存中的字节数组读取数据,适用于需要将字节数组作为输入源的场景。 3. **`StringBufferInputStream`**:从`StringBuffer`对象读取数据,尽管`StringBufferInputStream`已过时...

    Java中InputStream类.pdf

    - `public int read(byte[] b) throws IOException`: 读取多个字节,存入字节数组`b`中,返回实际读取的字节数。 - `public int read(byte[] b, int off, int len) throws IOException`: 类似于上一个方法,但可以...

    bytes:字节是一个很小的库,它提供了一种更好的使用Java中的字节数组的方法

    在Java编程语言中,字节数组(byte[])是一种基本的数据结构,广泛用于处理二进制数据,如文件读写、网络传输等场景。然而,由于字节数组是可变的,直接操作可能会引发线程安全问题。为了解决这个问题,“Bytes”库...

    Java字节流 .pdf

    * int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。 * int read(byte[] b, int off, int len):将输入流中最多len个数据字节读入byte数组。 * void reset():将此流重新定位到最后一...

    字节流实现从文件以字节读取信息

    本文将详细介绍如何使用Java中的字节流技术来实现从文件中按字节读取信息,并将其转换为字节数组。 #### Java中的字节流简介 Java提供了一套强大的流处理机制,使得开发者能够方便地进行数据的读写操作。字节流是...

    【IT十八掌徐培成】Java基础第16天-04.ByteArrayInputStream-ByteArrayOutputStream.zip

    ByteArrayInputStream是InputStream的一个子类,它允许我们从字节数组中读取数据。在Java编程中,我们经常会遇到需要将字节数组转换为输入流的情况,这时ByteArrayInputStream就派上了用场。它的构造函数接受一个...

    Java IO字符流和字节流

    - **`public void write(byte[] b, int off, int len)`**:向输出流写入字节数组b中从下标off开始的len个字节。 - **`public void flush()`**:刷新输出流,强制写出所有缓冲的输出字节。 ##### 3. 字符流 字符流...

    Java中的字节流.

    - `public void write(byte[] b, int off, int len) throws IOException`:将`len`个字节从指定的byte数组写入此输出流,从索引`off`处开始读取。 - **其他常用方法**: - `public void flush() throws ...

    深入解析Java编程中面向字节流的一些应用

    通过available()方法获取文件的大小,然后一次性读取整个文件内容到字节数组,并写入新文件。 过滤流(FilterInputStream 和 FilterOutputStream)是字节流的扩展,允许在数据传输过程中进行特定的转换或处理。这两...

    将输出流OutputStream转化为输入流InputStream的方法

    `ByteArrayOutputStream`允许我们将数据写入一个字节数组,而`ByteArrayInputStream`可以从该字节数组中读取数据。 以下是一个简单的代码示例,展示如何将`OutputStream`转换为`InputStream`: ```java import ...

    字节流工具

    例如,可以创建FileInputStream实例读取文件,然后通过循环调用read()方法将文件内容读入字节数组,再使用FileOutputStream写入到另一个文件。 - 数据在网络间的传输:Socket编程中,Socket的getInputStream()和...

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

    将一个String转化为InputStream,主要是将字符串转换成字节数组,然后创建一个ByteArrayInputStream。这种方法简单快捷,但会占用一定的内存空间。示例代码如下: ```java public InputStream string2...

    Java 从网络中读取图片 转换成Base64字符串

    这个程序首先从网络上下载图片,将其转换为字节数组,然后将这些字节编码为Base64字符串。在实际应用中,这个字符串可以直接嵌入到HTML中显示图片,也可以存储在数据库中供后续使用。 注意,`ReaderPicture`这个...

Global site tag (gtag.js) - Google Analytics