Java IO中的FileInputStream函数
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)。使用这些方法可以方便地读取二进制数据以及文本文件。
