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 {

      // 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:使用 Output Stream 将 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 的字节数组。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战