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
的字节数组。