跳到主要内容

Java 程序:将 InputStream 转换为字节数组

要理解这个示例,您应该了解以下 Java 编程 主题:

示例 1:Java 程序将 InputStream 转换为字节数组

import java.io.InputStream;
import java.util.Arrays;
import java.io.ByteArrayInputStream;

public class Main {

public static void main(String args[]) {

try {

// 创建一个输入流
byte[] input = {1, 2, 3, 4};
InputStream stream = new ByteArrayInputStream(input);
System.out.println("输入流: " + stream);

// 将输入流转换为字节数组
byte[] array = stream.readAllBytes();
System.out.println("字节数组: " + Arrays.toString(array));

stream.close();
}

catch (Exception e) {
e.getStackTrace();
}
}
}

输出

输入流: java.io.ByteArrayInputStream@27082746
字节数组: [1, 2, 3, 4]

在上面的示例中,我们创建了一个名为 stream 的输入流。请注意以下行,

byte[] array = stream.readAllBytes();

这里,readAllBytes() 方法从流中返回所有数据并存储在字节数组中。

注意:我们使用了 Arrays.toString() 方法将整个数组转换为字符串。

示例 2:使用输出流将 InputStream 转换为字节数组

import java.io.InputStream;
import java.util.Arrays;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

public class Main {

public static void main(String args[]) {

try {

// 创建一个输入流
byte[] input = {1, 2, 3, 4};
InputStream stream = new ByteArrayInputStream(input);
System.out.println("输入流: " + stream);

// 创建一个输出流
ByteArrayOutputStream output = new ByteArrayOutputStream();
// 创建一个字节数组来存储输入流
byte[] array = new byte[4];
int i;

// 从输入流读取所有数据到数组
while ((i = stream.read(array, 0, array.length)) != -1) {

// 将数组的所有数据写入输出流
output.write(array, 0, i);
}

byte[] data = output.toByteArray();

// 将输入流转换为字节数组
System.out.println("字节数组: " + Arrays.toString(data));
stream.close();
}

catch (Exception e) {
e.getStackTrace();
}
}
}

输出

输入流: java.io.ByteArrayInputStream@27082746
字节数组: [1, 2, 3, 4]

在上面的示例中,我们从数组 input 创建了一个输入流。请注意以下表达式,

stream.read(array, 0, array.length)

这里,从 stream 的所有元素被存储到 array 中,从索引 0 开始。然后我们将 array 的所有元素存储到名为 output 的输出流中。

output.write(array, 0, i)

最后,我们调用 ByteArrayOutputStream 类的 toByteArray() 方法,将输出流转换为名为 data 的字节数组。