Java中的文件操作——常用读写函数
Java中文件操作是一项非常重要的功能,在Java的开发中,经常需要读取和写入文件。那么,Java中的文件操作有哪些常用的读写函数呢?
一、文件读取
1. FileInputStream类
FileInputStream类是Java中用于读取文件的类。FileInputStream类对象可以使用read()、read(byte[] b)和available()的方法从文件中读取数据。例如:
FileInputStream fis = new FileInputStream("file.txt");
int byteContent = 0;
while ((byteContent = fis.read()) != -1) {
System.out.print((char) byteContent); // 输出文件中的内容
}
fis.close();
上述代码读取文件中的内容并输出。其中,read()方法每次从文件中读取一个字节,遇到文件结尾时,会返回-1,表示读完了。因此,上述代码的while循环在读取文件时会不断地读取文件中的内容,直至全部读取完毕。
read(byte[] b)方法每次从文件中读取最多byte[]长度的字节,并将这些字节存储在byte[]数组中,同时返回实际读取的字节数。例如:
FileInputStream fis = new FileInputStream("file.txt");
byte[] buffer = new byte[1024];
int length = 0;
while ((length = fis.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, length)); // 输出文件内容
}
fis.close();
上述代码每次从文件中读取最多1024个字节,并将这些字节存储在byte[]数组中,然后将这些字节转换为字符串并输出。
2. FileReader类
FileReader是Java中用于读取文本文件的类。和FileInputStream相比,FileReader可以直接读取文本文件,并将读取的内容转换为char类型。例如:
FileReader fr = new FileReader("file.txt");
int charContent = 0;
while ((charContent = fr.read()) != -1) {
System.out.print((char) charContent); // 输出文本文件中的内容
}
fr.close();
上述代码和FileInputStream类的使用方式非常相似。但是,由于FileReader是用来读取文本文件的,因此读取的字符会自动转换成Unicode字符,这样就可以很方便地读取文本文件。
二、文件写入
1. FileOutputStream类
FileOutputStream类是Java中用于写入文件的类。FileOutputStream类对象可以使用write()和flush()的方法将数据写入文件。例如:
String content = "Hello, world!";
FileOutputStream fos = new FileOutputStream("file.txt");
fos.write(content.getBytes()); // 将字符串转换成字节数组写入文件
fos.flush(); // 刷新缓冲区
fos.close();
上述代码将字符串"Hello, world!"转换成字节数组,并将这些字节写入在file.txt文件中。如此一来,file.txt文件就含有了字符串"Hello, world!"。
2. FileWriter类
FileWriter类是Java中用于写入文本文件的类。和FileOutputStream相比,FileWriter可以直接写入文本文件,并可以将要写入的内容转换成char类型。例如:
String content = "Hello, world!";
FileWriter fw = new FileWriter("file.txt");
fw.write(content); // 将字符串写入文件
fw.flush(); // 刷新缓冲区
fw.close();
上述代码和FileOutputStream类的使用方式非常相似,但是FileWriter是用来写入文本文件的,因此可以直接写入字符串,同时也会自动转换成Unicode字符。
综上,Java中的文件操作中包含了多种功能强大的读写函数,开发者应该根据实际需求,选择合适的函数来进行文件操作。如果需要进行读取或写入二进制文件,则应该优先使用FileInputStream和FileOutputStream类。而如果需要进行读取或写入文本文件,则应该优先使用FileReader和FileWriter类。
