在Java中使用FileInputStream的read()函数读取文件内容
Java中的FileInputStream类提供了读取文件内容的功能。这个类的read()函数可以读取文件的字节,返回值是读取到的字节数,也就是说如果读到文件末尾就返回-1。下面简单介绍一下如何使用FileInputStream类的read()函数来读取文件内容。
首先,需要创建一个FileInputStream对象。这个对象可以接受一个文件路径作为参数,指定要读取的文件。例如:
FileInputStream fis = new FileInputStream("C:\\myfolder\\myfile.txt");
这个语句创建了一个名为fis的FileInputStream对象,并指定了要读取的文件路径是C:\myfolder\myfile.txt。
接下来,可以使用read()函数读取文件的字节。read()函数有多个重载形式,下面介绍其中的两个:
public int read() throws IOException public int read(byte[] b) throws IOException
个read()函数每次读取一个字节,返回0到255的整数。如果已经达到文件的末尾,就返回-1。
第二个read()函数每次可以读取多个字节,将它们存储在一个字节数组中。返回值是读取到的字节数,如果已经达到文件末尾,就返回-1。
具体来说,可以使用while循环和read()函数来读取整个文件的内容。将读取到的字节存储在一个字节数组中,然后使用String类的构造函数将字节数组转换成字符串。最后关闭FileInputStream对象。示例代码如下:
FileInputStream fis = new FileInputStream("C:\\myfolder\\myfile.txt");
byte[] buffer = new byte[1024];
int length = 0;
String content = "";
while ((length = fis.read(buffer)) != -1) {
content += new String(buffer, 0, length);
}
fis.close();
System.out.println(content);
这个代码先创建了一个名为fis的FileInputStream对象,并指定了要读取的文件路径。然后创建了一个长度为1024的字节数组作为缓冲区,用于存储读取到的字节。在while循环中,每次读取一段字节存储在buffer数组中,然后将这些字节转换成字符串并追加在content变量中。最后关闭FileInputStream对象并打印出读取到的文件内容。
需要注意的是,这个代码是一个简单的示例。在实际应用中,需要考虑到字符编码的问题,以及文件较大时分批次读取等问题。同时,由于Java 7引入的try-with-resources语句可以自动关闭资源,因此可以使用更为简洁的代码:
try (FileInputStream fis = new FileInputStream("C:\\myfolder\\myfile.txt")) {
byte[] buffer = new byte[1024];
int length = 0;
String content = "";
while ((length = fis.read(buffer)) != -1) {
content += new String(buffer, 0, length);
}
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
这个代码使用了try-with-resources语句来创建FileInputStream对象,并在try块结束时自动关闭。其余部分与前面的代码类似。
