当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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为null,则此方法引发NullPointerException。
  • IndexOutOfBoundsException-在offset或offset为负或length为负后,如果长度大于输入流的长度,则此方法引发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/io/ByteArrayInputStream.html#read()
2. https://docs.oracle.com/javase/10/docs/api/java/io/ByteArrayInputStream.html#read(byte%5B%5D, int, int)




相关用法


注:本文由纯净天空筛选整理自pp_pankaj大神的英文原创作品 ByteArrayInputStream read() method in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。