Java教程

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

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

在这个例子中,我们将学习在 Java 中将输入流转换为字节数组。
要理解此示例,您应该了解以下Java 编程主题:
Java InputStream 类 Java ByteArrayInputStream 类 Java ByteArrayOutputStream 类

示例 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 的字节数组。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4