Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java程序将InputStream转换为字节数组(bytearray)

Java 实例大全

在此示例中,我们将学习将输入流转换为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的字节数组。

Java 实例大全