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


Java PushbackInputStream read()用法及代码示例


Java中的PushbackInputStream类的read()方法有两种类型:

  1. Java中的PushbackInputStream类的read()方法用于从输入流中读取下一个数据字节。此方法以整数形式从输入流返回读取的字节。

    用法:

    public int read()
              throws IOException
    

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

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

    返回值:此方法返回流的下一个字节。如果流结束,则返回-1。



    异常:如果通过调用同一类的close()方法关闭输入流,或者发生I /O错误,则此方法将引发IOException。

    以下示例程序旨在说明IO包中的PushbackInputStream类的read()方法:

    程序1:

    // Java program to illustrate 
    // PushbackInputStream read() method 
      
    import java.io.*; 
      
    public class GFG { 
        public static void main(String[] args) 
            throws IOException 
        { 
      
            // Create an array 
            byte[] byteArray 
                = new byte[] { 'G', 'E', 'E', 
                               'K', 'S' }; 
      
            // Create inputStream 
            InputStream inputStr 
                = new ByteArrayInputStream(byteArray); 
      
            // Create object of 
            // PushbackInputStream 
            PushbackInputStream pushbackInputStr 
                = new PushbackInputStream(inputStr); 
      
            for (int i = 0; i < byteArray.length; i++) { 
                System.out.println( 
                    "Char:"
                    + (char)pushbackInputStr.read()); 
            } 
        } 
    }
    输出:
    Char:G
    Char:E
    Char:E
    Char:K
    Char:S
    

    程序2:

    // Java program to illustrate 
    // PushbackInputStream read() method 
      
    import java.io.*; 
      
    public class GFG { 
        public static void main(String[] args) 
            throws IOException 
        { 
      
            // Create an array 
            byte[] byteArray 
                = new byte[] { 'G', 'E', 'E', 'K', 'S', 
                               'F', 'O', 'R', 'G', 'E', 
                               'E', 'K', 'S' }; 
      
            // Create inputStream 
            InputStream inputStr 
                = new ByteArrayInputStream(byteArray); 
      
            // Create object of 
            // PushbackInputStream 
            PushbackInputStream pushbackInputStr 
                = new PushbackInputStream(inputStr); 
      
            for (int i = 0; i < byteArray.length; i++) { 
                System.out.println( 
                    "Char:"
                    + (char)pushbackInputStr.read()); 
            } 
        } 
    }
    输出:
    Char:G
    Char:E
    Char:E
    Char:K
    Char:S
    Char:F
    Char:O
    Char:R
    Char:G
    Char:E
    Char:E
    Char:K
    Char:S
    
  2. Java中的PushbackInputStream类的read(byte [],int,int)方法用于从输入流中读取多达给定字节的数据到字节数组中。此方法一次不读取一个字符,而是一次读取多个字符。

    用法:

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

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



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

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

    返回值:此方法返回读取的字节总数。如果流结束,则返回-1。

    异常:

    • NullPointerException -如果字节数组为null,则此方法引发NullPointerException。
    • IndexOutOfBoundsException-如果offset为负或length为负或length大于数组和offset的长度之差,则此方法引发IndexOutOfBoundsException。
    • IOException-如果通过调用同一类的close()方法关闭输入流,或者发生I /O错误,则此方法将引发IOException。

    以下示例程序旨在说明IO包中PushbackInputStream类的read(byte [],int,int)方法:

    程序1:

    // Java program to illustrate 
    // PushbackInputStream 
    // read(byte[], int, int) method 
      
    import java.io.*; 
      
    public class GFG { 
        public static void main(String[] args) 
            throws IOException 
        { 
      
            // Create buffer 
            byte[] b = new byte[1024]; 
      
            // Create an array 
            byte[] byteArray 
                = new byte[] { 'G', 'E', 'E', 
                               'K', 'S' }; 
      
            // Create inputStream 
            InputStream inputStr 
                = new ByteArrayInputStream(byteArray); 
      
            // Create object of 
            // PushbackInputStream 
            PushbackInputStream pushbackInputStr 
                = new PushbackInputStream(inputStr); 
      
            pushbackInputStr.read(b, 0, 4); 
      
            for (int i = 0; i < 4; i++) { 
                System.out.print((char)b[i]); 
            } 
        } 
    }
    输出:
    GEEK
    

    程序2:

    // Java program to illustrate 
    // PushbackInputStream 
    // read(byte[], int, int) method 
      
    import java.io.*; 
      
    public class GFG { 
        public static void main(String[] args) 
            throws IOException 
        { 
      
            // Create buffer 
            byte[] b = new byte[1024]; 
      
            // Create an array 
            byte[] byteArray 
                = new byte[] { 'G', 'E', 'E', 'K', 'S', 
                               'F', 'O', 'R', 'G', 'E', 
                               'E', 'K', 'S' }; 
      
            // Create inputStream 
            InputStream inputStr 
                = new ByteArrayInputStream(byteArray); 
      
            // Create object of 
            // PushbackInputStream 
            PushbackInputStream pushbackInputStr 
                = new PushbackInputStream(inputStr); 
      
            pushbackInputStr.read(b, 8, 5); 
      
            for (int i = 8; i < 13; i++) { 
                System.out.print((char)b[i]); 
            } 
        } 
    }
    输出:
    GEEKS
    

参考文献:
1. https://docs.oracle.com/javase/10/docs/api/java/io/PushbackInputStream.html#read()
2. https://docs.oracle.com/javase/10/docs/api/java/io/PushbackInputStream.html#read(byte%5B%5D, int, int)




相关用法


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