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

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

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

  1. Java中BufferedInputStream类的read()方法用于从输入流中读取数据的下一个字节。当对输入流调用此 read() 方法时,此 read() 方法一次读取输入流的一个字符。

    句法:

    public int read()
    

    覆盖:
    它覆盖了FilterInputStream类的 read() 方法。

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

    返回值:此方法不返回任何值。

    异常:如果输入流已通过调用其 close() 方法关闭或发生 I/O 错误,则此方法抛出IOException

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

    程序:假设文件“c:/demo.txt”存在。

    // Java program to illustrate
    // BufferedInputStream read() method
      
    import java.io.*;
      
    public class GFG {
        public static void main(String[] args)
            throws Exception
        {
      
            // Create input stream 'demo.txt'
            // for reading containing
            // text "GEEKSFORGEEKS"
            FileInputStream inputStream
                = new FileInputStream("c:/demo.txt");
      
            // Convert inputStream to
            // bufferedInputStream
            BufferedInputStream buffInputStr
                = new BufferedInputStream(
                    inputStream);
      
            // Read until a single byte is available
            while (buffInputStr.available() > 0) {
      
                // Read the byte and
                // convert the integer to character
                char c = (char)buffInputStr.read();
      
                // Print the characters
                System.out.println("Char : " + c);
            }
        }
    }
    
    输入:
    输出:
  2. Java中BufferedInputStream类的read(byte[ ] b, int off, int len)方法用于将字节输入流中的字节读取到指定的字节数组中,该数组从用户给定的偏移量开始。它基本上用于在保留数组中的字符后开始读取。

    执行:

    • 在该方法的实现中,read() 方法被一次又一次地调用。如果发现 IOException,则在调用此方法时,它会从调用 read(byte[ ] b, int off, int len) 方法返回异常。
    • 如果进一步发现任何 IOException,则它会捕获异常并且应该结束输入文件。
    • 到目前为止读取的字节存储在字节数组 b 中,并返回发生异常之前读取的字节数。

    句法:

    public int read(byte[] b,
                    int off,
                    int len)
    

    覆盖:
    它覆盖了FilterInputStream类的 read() 方法。

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

    • b – 它表示目标缓冲区。
    • off – 它表示将开始存储字节的偏移量。
    • len - 它表示要读取的最大字节数。

    返回值:此方法不返回任何值。

    异常:如果输入流已通过调用其 close() 方法关闭或发生 I/O 错误,则此方法抛出IOException

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

    程序:假设文件“c:/demo.txt”存在。

    // Java program to illustrate
    // BufferedInputStream
    // read(byte int int) method
      
    import java.io.*;
    public class GFG {
        public static void main(String[] args)
        {
      
            // Create input stream 'demo.txt'
            // for reading containing
            // text "GEEKSFORGEEKS"
            FileInputStream inputStream
                = new FileInputStream("c:/demo.txt");
      
            // Convert inputStream to
            // bufferedInputStream
            BufferedInputStream buffInputStr
                = new BufferedInputStream(
                    inputStream);
      
            // Read number of bytes available
            int rem_byte = buffInputStr.available();
      
            // Byte array is declared
            byte[] barr = new byte[rem_byte];
      
            // Read byte into barr,
            // starts at offset 1,
            // 5 bytes to read
            buffInputStr.read(barr, 1, 5);
      
            // For each byte in barr
            for (byte b : barr) {
                if (b == (byte)0)
                    b = (byte)'-';
                System.out.print((char)b);
            }
        }
    }
    
    输入:
    输出:

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