1.字符流
2.IO流异常处理
3.Properties属性集
4.ResourceBundle工具类(专门用于属性集保存之后的文件)
一,字符流
首先字节流也是可以读取文本文件的!!!但是可能会出现一种状况,读取中文时只读取其中一般,因为中文不只由一个字节组成.
为了解决这个问题,引入了字符流,以字符作为单位来操作!!
字符输入流:
顶层父类:Reader 抽象类
顶层父类: Reader(抽象类)
共性方法:
public void close(); 释放资源
public int read(); 一次读一个字符
public int read(char[] chs); 一次读取一个字符数组,返回值表示实际读取的字符个数
FileReader类
文件的字符输入流(从文件中读取字符数据)
构造方法
public FileReader(String path);
public FileReader(File file);
public class TestFileReader01 {
public static void main(String[] args) throws Exception {
//1.创建一个FileReader对象
FileReader fr = new FileReader("1.txt");
// FileReader fr = new FileReader(new File("1.txt"));
/**
* 以上构造干了三件事!!
* a.创建对象fr
* b.判断文件是否存在
* 如果存在,不清空!!!
* 如果不存在,报错!
* c.绑定fr和1.txt文件
*/
}
}
读取一个字符
.读取一个字符
public class TestFileReader02 {
public static void main(String[] args) throws Exception {
//1.创建一个FileReader对象
FileReader fr = new FileReader("1.txt");
//2.一次读一个字符
//int ch = fr.read();
//System.out.println((char) ch);
//===========一次读取一个字符的标准循环代码===========
int ch = 0; //用来保存读取到的字符
/**
* (ch = fr.read()) != -1
* 以上代码干了三件事!!
* a.读取 fr.read();
* b.赋值 ch = 读到的字符
* c.判断 ch != -1
*/
while ((ch = fr.read()) != -1) {
System.out.println((char) ch);
}
//3.释放资源
fr.close();
}
}
读取一个字符数组
public class TestFileReader03 {
public static void main(String[] args) throws Exception {
//1.创建一个FileReader对象
FileReader fr = new FileReader("1.txt");
//2.一次读一个字符数组
//char[] chs = new char[4];
//int len = fr.read(chs);
//System.out.println("实际读取到"+len+"个字符");
//System.out.println(new String(chs,0,len));
char[] chs = new char[4]; //保存字符数据的数组
int len = 0;//保存实际读取的个数
/**
* (len = fr.read(chs)) != -1
* 以上代码也是干了三件事!!!
* a.读取 fr.read(chs);
* b.赋值 len = 实际读取的个数
* c.判断 len != -1
*/
while ((len = fr.read(chs)) != -1) {
System.out.println(new String(chs,0,len));
}
//3.释放资源
fr.close();
}
}
字符输出流
顶层父类:Writer(抽象类)
顶层父类:Writer(抽象类)
共性方法:
public void close();//释放资源
public void flush();//对于字符流来说有用!!
public void write(int ch); //写一个字符
public void write(char[] chs); //写一个字符数组
public void write(char[] chs,int startIndex,int len); //写一个字符数组的一部分
public void write(String str);// 直接写一个字符串
public void write(String str,int startIndex,int len);// 直接写一个字符串的一部分
.FileWriter类
文件的字符输出流(向文件中写字符数据)
构造方法
public FileWriter(String path);
public FileWriter(File file);
public class TestFileWriter01 {
public static void main(String[] args) throws IOException {
//1.创建一个FileWriter对象
FileWriter fw = new FileWriter("2.txt");
// FileWriter fw = new FileWriter(new File("2.txt"));
/**
* 以上构造干了三件事
* a.创建对象fw
* b.判断文件是否存在
* 如果存在,清空文件内容
* 如果不存在,会创建文件
* c.绑定fw和2.txt
*/
}
}
写出字符数据的三种方法