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


Java DataInputStream read()用法及代碼示例


Java中的DataInputStream類的read()方法有兩種類型:

  1. 讀取(字節[] b)Java中的DataInputStream類的方法用於從輸入流中讀取字節並將其存儲到緩衝區字節數組中。此read()方法以整數類型返回實際讀取的字節數。如果輸入流結束並且沒有更多數據可讀取,則此方法返回-1。如果字節數組為null,則此方法引發異常。

    用法:

    public final int read(byte[] b)
                   throws IOException
    

    覆蓋:此方法覆蓋FilterInputStream類的read()方法。

    參數:此方法接受一個參數b,該參數b表示要在其中讀取數據的字節數組。

    返回值:此方法返回實際讀取的字節數。如果輸入流結束並且沒有更多數據可讀取,則返回-1。



    異常:

    • NullPointerException -如果字節數組為null,則拋出NullPointerException。
    • IOException-如果流關閉或發生其他一些I /O錯誤,則此方法將引發IOException。

    以下示例程序旨在說明IO包中DataInputStream類中的read(byte [])方法:

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

    // Java program to illustrate 
    // DataInputStream read(byte[]) method 
    import java.io.*; 
    public class GFG { 
        public static void main(String[] args) 
            throws IOException 
        { 
      
            // Create input stream 'demo.txt' 
            // for reading containing 
            // text "GEEKSFORGEEKS" 
            FileInputStream inputStream 
                = new FileInputStream( 
                    "c:/demo.txt"); 
      
            // Convert inputStream to 
            // DataInputStream 
            DataInputStream dataInputStr 
                = new DataInputStream( 
                    inputStream); 
      
            // Count the total bytes 
            // form the input stream 
            int count = inputStream.available(); 
      
            // Create byte array 
            byte[] b = new byte[count]; 
      
            // Read data into byte array 
            int bytes = dataInputStr.read(b); 
      
            // Print number of bytes 
            // actually read 
            System.out.println(bytes); 
      
            for (byte by:b) { 
                // Print the character 
                System.out.print((char)by); 
            } 
        } 
    }
    輸入:
    輸出:
  2. 讀取(字節[] b,整數偏移量,整數長度)Java中的DataInputStream類的方法用於從輸入流中讀取指定數量的字節並將其存儲到緩衝區字節數組中。此read()方法以整數類型返回實際讀取的字節數。如果輸入流結束並且沒有更多數據可讀取,則此方法返回-1。如果字節數組為null,則此方法引發異常。

    用法:

    public final 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-如果流關閉或發生其他一些I /O錯誤,則此方法將引發IOException。

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

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

    // Java program to illustrate 
    // DataInputStream read(byte[], int, int) method 
    import java.io.*; 
    public class GFG { 
        public static void main(String[] args) 
            throws IOException 
        { 
      
            // Create input stream 'demo.txt' 
            // for reading containing 
            // text "GEEKSFORGEEKS" 
            FileInputStream inputStream 
                = new FileInputStream( 
                    "c:/demo.txt"); 
      
            // Convert inputStream to 
            // DataInputStream 
            DataInputStream dataInputStr 
                = new DataInputStream( 
                    inputStream); 
      
            // Count the total bytes 
            // form the input stream 
            int count = inputStream.available(); 
      
            // Create byte array 
            byte[] b = new byte[count]; 
      
            // Read data into byte array 
            int bytes = dataInputStr.read(b, 4, 5); 
      
            // Print number of bytes 
            // actually read 
            System.out.println(bytes); 
      
            for (byte by:b) { 
                // Print the character 
                System.out.print((char)by); 
            } 
        } 
    }
    輸入:
    輸出:

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




相關用法


注:本文由純淨天空篩選整理自pp_pankaj大神的英文原創作品 DataInputStream read() method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。