一. 普通的IO字符流
1. 字符输出流FileWriter
1) 构造方法:FileWriter fw=newFileWriter(String fileName)
fileName:传递一个要写入的目标文件名称
(另外记着字符输出流的父类是Writer)
2) 成员方法
write():往文件里写入内容
write(String str):写一个字符串数据
write(String str,int index,int len) 写一个字符串中的一部分 数据,index:开始索引,len:写几个
write(int ch) 写一个字符数据,这里写int类型的好处是既 可以写char类型的数据,也可以写char对应的int类型的 值。
(char与int之间的变化是使用ASCII码表经行转换的。例,a对应 ASCII码表里的97)
write(char[] chs) 写一个字符数组数据
write(char[] chs,int index,int len) 写一个字符数组的一部分 数据,index:开始索引,len:写几个
flush() 刷新该流的缓冲,把内存缓冲区中的数据刷新到 文件中。
(如果不刷新,则没有所写的内容)
void close() 先刷新一次,再关闭流
(必须关流,养成习惯)
3) 追加写入
格式:FileWriter fw=new FileWriter(StringfileName,boolean append)
append为true时创建时创建新文件时,如果有相同名称的 原文件存在,直接在原文件的基础上追加写入
append为false时创建时创建新文件时,如果有相同名称的 原文件存在,直接覆盖原文件重新写入
创建字符输出流对象如果不填写默认是false
4) 换行
windows:\r\n
linux:\n
mac:\r
(如果使用高级文本查看器浏览,则上面都可以换行,若使用系统自带文本查看器,只有对应的格式才会换行)
2. 字符输入流FileReader
1) 构造方法
FileReaderr fr=new FileReader(String fileName)
filename:传递要读取的文件名称
2) 成员方法
int read() 读取单个字符并返回
int read(char[] cbuf) 一次读取一个字符数组的数据,返回的是实际读取的字符个数
二. 高效的IO字符流
1. 字符输出缓冲流BufferedWriter
1) 构造方法
BufferedWriter bw=new BufferedWriter(new FileWriter(String fileName))
new FileWriter(String fileName) 传递一个FileWriter对象
2) 成员方法
同FileWriter成员方法
newLine() 换行
2. 字符输入缓冲流BufferedReader
1) 构造方法
BufferedReader br=new BufferedReader(newFileReader(String fileName))
new FileReader(String fileName) 传递一个FileReader对象
2) 成员方法
同FileReader成员方法
readLine() 一次读写一行数据,但是不读取换行符
(这里使用的高效流是非线程安全的,但效率很高并且高效流本身是不进行文本的读取和写入的,仅仅只是提高读写的效率。PS:可以使用System.current TimeMillis()方法获取开始时间,然后在写完后再用一次上面的方法,求出两者之间的差值,即会获得字符流运行时间的毫秒值)