📌  相关文章
📜  Java中的 ByteArrayInputStream read() 方法及示例

📅  最后修改于: 2022-05-13 01:55:26.412000             🧑  作者: Mango

Java中的 ByteArrayInputStream read() 方法及示例

Java中ByteArrayInputStream类的read()方法有两种使用方式:

1、 Java中ByteArrayInputStream类的read()方法用于读取ByteArrayInputStream的下一个字节。此 read() 方法以整数形式返回读取的字节,如果输入流结束,则此方法返回 -1。此方法一次从流中读取一个字节。

句法:

public int read()

指定者:该方法由InputStream类的 read() 方法指定。

参数:此方法不接受任何参数。

返回值:该方法以整数形式返回读取的字节。如果流结束,则返回-1。

异常:此方法不会抛出任何异常。

下面的程序说明了 IO 包中 ByteArrayInputStream 类中的 read() 方法:

程序:

// Java program to illustrate
// ByteArrayInputStream read() method
  
import java.io.*;
  
public class GFG {
    public static void main(String[] args)
        throws Exception
    {
  
        // Create byte array
        byte[] buf = { 71, 69, 69, 75, 83 };
  
        // Create byteArrayInputStream
        ByteArrayInputStream byteArrayInputStr
            = new ByteArrayInputStream(buf);
  
        int b = 0;
        while ((b = byteArrayInputStr.read()) != -1) {
            // Convert byte to character
            char ch = (char)b;
  
            // Print the character
            System.out.println("Char : " + ch);
        }
    }
}
输出:
Char : G
Char : E
Char : E
Char : K
Char : S

2. Java中ByteArrayInputStream类的read(byte[ ], int, int)方法用于从ByteArrayOutputStream中读取给定数量的字节到给定的字节数组中。此方法与上述 read() 方法不同,因为它一次可以读取多个字节。它返回读取的总字节数作为返回值。

句法:

public void read(byte[ ] b,
                 int offset,
                 int length)

覆盖:此方法覆盖InputStream类的 read() 方法。

参数:此方法接受三个参数:

  • b – 它表示读取数据的字节数组。
  • offset – 它表示字节数组 b 中的起始索引。
  • length - 它表示要读取的字节数。

返回值:此方法返回读入缓冲区的总字节数。如果输入流结束,则此方法返回 -1。

例外:

  • NullPointerException – 如果字节数组 b 为空,此方法将引发 NullPointerException。
  • IndexOutOfBoundsException – 如果在偏移量或偏移量为负数或长度为负数后长度大于输入流的长度,则此方法抛出 IndexOutOfBoundsException。

下面的程序说明了 IO 包中 ByteArrayInputStream 类中的 read(byte[ ], int, int) 方法:

程序:

// Java program to illustrate
// ByteArrayInputStream
// read(byte[ ], int, int) method
  
import java.io.*;
  
public class GFG {
    public static void main(String[] args)
        throws Exception
    {
  
        // Create byte array
        byte[] buf = { 71, 69, 69, 75, 83 };
  
        // Create byteArrayInputStream
        ByteArrayInputStream byteArrayInputStr
            = new ByteArrayInputStream(buf);
  
        // Create buffer
        byte[] b = new byte[4];
  
        int total_bytes
            = byteArrayInputStr.read(b, 1, 3);
  
        // Total number of bytes read
        System.out.println("Total bytes read: "
                           + total_bytes);
  
        for (byte ch : b) {
  
            // Print the character
            if (ch == 0)
                System.out.println("NULL");
  
            else
                System.out.println((char)ch);
        }
    }
}
输出:
Total bytes read: 3
NULL
G
E
E

参考:
1. https://docs.oracle.com/javase/10/docs/api/java Java()
2. https://docs.oracle.com/javase/10/docs/api/java Java, int, int)