在此示例中,我们将学习将输入流转换为Java中的字节数组。
要理解此示例,您应该了解以下Java编程主题:
示例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 { //创建输入流 byte[] input = {1, 2, 3, 4}; InputStream stream = new ByteArrayInputStream(input); System.out.println("Input Stream: " + stream); //将输入流转换为字节数组 byte[] array = stream.readAllBytes(); System.out.println("字节数组: " + Arrays.toString(array)); stream.close(); } catch (Exception e) { e.getStackTrace(); } } }
输出结果
Input Stream: java.io.ByteArrayInputStream@27082746 字节数组: [1, 2, 3, 4]
在上面的示例中,我们创建了一个名为stream的输入流(InputStream)。注意这一行,
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("Input Stream: " + 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("Byte Array: " + Arrays.toString(data)); stream.close(); } catch (Exception e) { e.getStackTrace(); } } }
输出结果
Input Stream: java.io.ByteArrayInputStream@27082746 Byte Array: [1, 2, 3, 4]
在上面的示例中,我们从array创建了一个输入流input。注意表达式
stream.read(array, 0, array.length)
在这里,流中的所有元素都存储在数组中,从索引0开始。然后,我们将数组的所有元素存储到名为output的输出流中。
output.write(array, 0, i)
最后,我们调用 ByteArrayOutputStream 类的toByteArray()方法,将输出流转换为名为data的字节数组。