當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。