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

📅  最后修改于: 2020-09-26 18:39:20             🧑  作者: Mango

在此示例中,我们将学习将输入流转换为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 {

      // 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)

在这里, 中的所有元素都存储在数组中 ,从索引0开始。然后,将数组的所有元素存储到名为output的输出流中。

output.write(array, 0, i)

最后,我们调用ByteArrayOutputStream类的toByteArray()方法,将输出流转换为名为data的字节数组。