示例 1: 将 InputStream 转换为字节数组的 Java 程序
import java.io.InputStream; import java.util.Arrays; import java.io.ByteArrayInputStream; public class Main { public static void main(String args[]) { try { // create an input stream byte[] input = {1, 2, 3, 4}; InputStream stream = new ByteArrayInputStream(input); System.out.println("Input Stream: " + stream); // convert the input stream to byte array byte[] array = stream.readAllBytes(); System.out.println("Byte Array: " + Arrays.toString(array)); stream.close(); } catch (Exception e) { e.getStackTrace(); } } }
输出
Input Stream: java.io.ByteArrayInputStream@27082746 Byte Array: [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 { // create an input stream byte[] input = {1, 2, 3, 4}; InputStream stream = new ByteArrayInputStream(input); System.out.println("Input Stream: " + stream); // create an output stream ByteArrayOutputStream output = new ByteArrayOutputStream(); // create a byte array to store input stream byte[] array = new byte[4]; int i; // read all data from input stream to array while ((i = stream.read(array, 0, array.length)) !=-1) { // write all data from array to output output.write(array, 0, i); } byte[] data = output.toByteArray(); // convert the input stream to byte array System.out.println("Byte Array: " + Arrays.toString(data)); stream.close(); } catch (Exception e) { e.getStackTrace(); } } }
输出
Input Stream: java.io.ByteArrayInputStream@27082746 Byte Array: [1, 2, 3, 4]
在上面的例子中,我们从数组
input 创建了一个输入流。注意表达式,
stream.read(array, 0, array.length)
这里,
stream 中的所有元素都存储在
array 中,从索引 0 开始。然后我们将
array 的所有元素存储到名为
output 的输出流中。
output.write(array, 0, i)
最后,我们调用
ByteArrayOutputStream
类的
toByteArray()
方法,将输出流转换为名为
data 的字节数组。