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

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

Java中的 DataInputStream readFully() 方法及示例

Java中DataInputStream类的readFully()方法有两种:

  1. Java中DataInputStream类的readFully(byte[] b)方法用于从输入流中读取等于字节数组b长度的字节,并将它们存储到字节数组b中。

    一般合同:
    readFully(byte[] b) 方法在以下情况之一被阻止:

    • 输入数据可用,返回正常。
    • 文件结束并抛出 EOFException。
    • 发生 I/O 错误并引发 IOException。

    句法:

    public final void readFully(byte[] b)
                      throws IOException
    

    指定者:该方法由DataInput接口的readFully()方法指定。

    参数:此方法接受一个参数 b,该参数表示要读取数据的字节数组。

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

    例外:

    • NullPointerException – 如果字节数组为空,则抛出NullPointerException
    • EOFException – 如果文件结束,它会抛出EOFException
    • IOException – 如果流关闭或发生其他 I/O 错误,此方法将引发IOException

    下面的程序说明了 IO 包中 DataInputStream 类中的 readFully(byte[]) 方法:

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

    // Java program to illustrate
    // DataInputStream readFully(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
            int count = dataInputStr.available();
      
            // Create byte array
            byte[] b = new byte[count];
      
            // Read full data into byte array
            dataInputStr.readFully(b);
      
            for (byte by : b) {
                // Print the character
                System.out.print((char)by);
            }
        }
    }
    
    输入:
    输出:
  2. Java中DataInputStream类的readFully(byte[] b, int offset, int length)方法用于从输入流中读取与传递的参数 'length' 相等的字节,并将它们存储到字节数组 b 中。

    一般合同:
    readFully(byte[], int, int) 方法在以下情况之一被阻止:

    • 输入数据可用,返回正常。
    • 文件结束并抛出 EOFException。
    • 发生 I/O 错误并引发 IOException。

    句法:

    public final void readFully(byte[] b,
                                int offset,
                                int length)
                         throws IOException
    

    指定者:该方法由DataInput接口的readFully()方法指定。

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

    • b – 它表示要读取数据的字节数组。
    • offset – 它表示字节数组中的起始索引。
    • 长度——它表示要读取的字节总数。

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

    例外:

    • NullPointerException – 如果字节数组为空,则抛出NullPointerException
    • IndexOutOfBoundsException - 如果偏移量为负数或长度为负数或长度大于字节数组长度与偏移量的差,则抛出IndexOutOfBoundsException
    • EOFException – 如果文件结束,它会抛出EOFException
    • IOException – 如果流关闭或发生其他 I/O 错误,此方法将引发IOException

    下面的程序说明了 IO 包中 DataInputStream 类中的 readFully(byte[], int, int) 方法:

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

    // Java program to illustrate
    // DataInputStream readFully(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
            int count = dataInputStr.available();
      
            // Create byte array
            byte[] b = new byte[count];
      
            // Read full data into byte array
            dataInputStr.readFully(b, 4, 5);
      
            for (byte by : b) {
                // Print the character
                System.out.print((char)by);
            }
        }
    }
    
    输入:
    输出:

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