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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。