欢迎访问宙启技术站
智能推送

Java IO中的FileInputStream函数

发布时间:2023-06-18 08:06:52

Java IO中的FileInputStream函数是用于从文件中读取数据的输入流函数。它属于字节流,用于读取二进制数据(如图像、音频和视频文件)以及文本文件。FileInputStream可以打开一个文件、读取文件的内容并将其保存到内存中。

FileInputStream可以接受文件的路径或File对象作为参数,创建一个输入流对象并将其连接到指定文件。此类提供了多个读取文件内容的方法,包括read()、read(byte[] buffer)、read(byte[] buffer, int offset, int length)。

1. read()

read()方法是FileInputStream的最基本方法,用于从文件中读取一个字节。该方法返回该字节的整数表示,如果已到达文件的末尾,则返回-1。以下是使用该方法读取文件的示例:

try {
    FileInputStream input = new FileInputStream("D:/test.txt");
    int data = input.read();

    while(data != -1) {
        System.out.println((char) data);
        data = input.read();
    }

    input.close();
} catch(IOException e) {
    e.printStackTrace();
}

上述代码读取文件中的每个字符并将其打印到控制台中。需要注意的是,使用read()方法读取文本文件之前需要先判断文件的编码格式,否则可能会出现乱码。

2. read(byte[] buffer)

如果需要从文件中读取多个字节,可以使用read(byte[] buffer)方法。该方法从文件中读取指定数量的字节,并将其存储在缓冲区数组中。以下是使用该方法读取文件的示例:

try {
    FileInputStream input = new FileInputStream("D:/test.txt");
    byte[] buffer = new byte[1024];

    int length = input.read(buffer);

    while(length != -1) {
        System.out.println(new String(buffer, 0, length));
        length = input.read(buffer);
    }

    input.close();
} catch(IOException e) {
    e.printStackTrace();
}

上述代码从文件中读取最多1024个字节,将它们存储在缓冲区数组中,并在控制台中打印它们。注意,在使用read(byte[] buffer)方法时需要使用String构造函数将字节数组转换为字符串。

3. read(byte[] buffer, int offset, int length)

如果需要从文件中读取一部分字节,可以使用read(byte[] buffer, int offset, int length)方法。该方法从文件中读取指定数量的字节,从指定的偏移量开始,并将其存储在缓冲区数组中。以下是使用该方法读取文件的示例:

try {
    FileInputStream input = new FileInputStream("D:/test.txt");
    byte[] buffer = new byte[1024];

    int length = input.read(buffer, 0, 512);

    while(length != -1) {
        System.out.println(new String(buffer, 0, length));
        length = input.read(buffer, 0, 512);
    }

    input.close();
} catch(IOException e) {
    e.printStackTrace();
}

上述代码从文件中读取最多512个字节,从缓冲区数组的第0个位置开始,并在控制台中打印它们。需要注意的是,使用read(byte[] buffer, int offset, int length)方法指定偏移量和长度时需要确保它们不超出缓冲区数组的长度。

总结

Java IO中的FileInputStream函数是用于从文件中读取数据的输入流函数。它可以通过文件路径或File对象创建输入流对象,提供了多个读取文件内容的方法,包括read()、read(byte[] buffer)、read(byte[] buffer, int offset, int length)。使用这些方法可以方便地读取二进制数据以及文本文件。