Java中读写文件的关键在于节点流和处理流的的选取上,而节点流和处理流又分为面向字节、面向字符两种处理模式,因此,需要根据实际的情况选择合适的处理模式,一般而言,往往尽量尝试使用面向字符的处理模式,如果程序代码无法编译成功,再尝试使用面向字节的的处理模式。
1.节点流和处理流的分类(包括了面向字节和面向字符)
2.读文件
(1)创建文件路径对象
//通过File创建文件路径对象
File filePath= new File("src/com/test/io/test.txt");
(2)创建节点流对象(面向字符的处理模式)
//创建节点流对象(面向字符的处理模式)
FileReader fr = new FileReader(filePath);
(3)创建处理流包装节点流对象(面向字符的处理模式):
//创建处理流包装节点流对象(面向字符的处理模式)
BufferedReader br = new BufferedReader(fr);
(4)读取文件内容(ready():告诉这个流是否准备好被读取。返回值类型:boolean)
//读取文件内容
while(br.ready()){
System.out.println(br.readLine());
}
(5)关闭处理流、节点流等
//关闭处理流、节点流等
br.close();
fr.close();
(6)测试
新建文件:test.txt
代码文件:demo.java
packagecom.test.io;
import java.io.*;
public classdemo {
public static void main(String[] args) throwsIOException {
//1.通过File创建文件路径对象
File filePath= new File("src/com/test/io/test.txt");
try{
//2.创建节点流对象(面向字符的处理模式)
FileReader fr = newFileReader(filePath);
//3.创建处理流包装节点流对象(面向字符的处理模式)
BufferedReader br = newBufferedReader(fr);
//4.读取文件内容
while(br.ready()){
System.out.println(br.readLine());
}
//5.关闭处理流、节点流等
br.close();
fr.close();
} catch(FileNotFoundException e) {
e.printStackTrace();
}
}
}
运行截图:
3.写文件
(1)创建文件路径对象
//通过File创建文件路径对象
File filePath = new File("src/com/test/io/test2.txt");
(2)创建节点流对象(面向字符的处理模式)
//创建节点流对象(面向字符的处理模式)
FileWriter fw = new FileWriter(filePath);
(3)创建处理流包装节点流对象(面向字符的处理模式):
//创建处理流包装节点流对象(面向字符的处理模式)
BufferedWriter bw = new BufferedWriter(fw);
(4)写入数据
//写入数据
bw.write("ABCDED\r\n");
bw.write("一二三四");
(5)关闭处理流、节点流等
//关闭处理流、节点流等
bw.close();
fw.close();
(6)测试:
代码文件:demo.java
packagecom.test.io;
import java.io.*;
public classdemo {
public static voidmain(String[] args) {
//1.通过File创建文件路径对象
File filePath = new File("src/com/test/io/test2.txt");
try{
//2.创建节点流对象(面向字符的处理模式)
FileWriter fw = newFileWriter(filePath);
//3.创建处理流包装节点流对象(面向字符的处理模式)
BufferedWriter bw = newBufferedWriter(fw);
//4.写入数据
bw.write("ABCDED\r\n");
bw.write("一二三四");
//5.关闭处理流、节点流等
bw.close();
fw.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
运行截图: