字符流
字符输出流
一个字符一个字符的读
注意: 只能用来操作文本
Writer(所有字符输出流的父类 抽象类)
FileWriter
构造方法(绑定写入的路径)
文件
字符串
Mac系统下 一个中文字符3个字节 默认使用UTF-8的编码表(通用的编码表)
Windows系统下 一个中文字符2个字节 默认使用GBK的编码表(简体中文)
flush() — 刷新
字符输出流在写入文件的时候
需要调用刷新方法
建议 每次写入最好都刷新一次
字符输入流 写入
例
FileWriter fw = new FileWriter("/Users/lanou/Desktop/Test/haha.txt");
fw.write(100);
fw.flush();
// 字符数组写入
char[] c = {'d','p','y','g','s'};
fw.write(c);
fw.flush();
fw.write(c, 1, 3);
fw.flush();
// 使用字符串直接写入
fw.write("寥落古行宫\n宫花寂寞红\n白头宫女在\n闲坐说玄宗\n");
fw.flush();
fw.write("独坐幽篁里", 1, 2);
fw.close();
字符输入流
Reader(所有字符输入流的父类 抽象类)
写的时候可以直接写入字符串
读的时候 不能 直接读字符串
因为 字符串很难界定到哪里结束 不太容易判断一个字符串
例
FileReader fr = new FileReader("/Users/lanou/Desktop/Test/haha.txt");
int len = 0;
while ((len = fr.read()) != -1) {
System.out.println((char)len);
}
char[] c = new char[1024];
while ((len = fr.read(c)) != -1) {
System.out.println(new String(c, 0, len));
}
fr.close();
转换流
OutPutStreamWriter — 字符流转向字节流
可以使用不同编码格式写入
会使用到FileOutputStream类
例
利用转换流写文件OutPutStreamWriter 默认UTF8写入
FileOutputStream fos =
new FileOutputStream("/Users/lanou/Desktop/Test/utf8.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("张三");
osw.flush();
osw.close();
注意: 这里只需要关闭外层的流(转换流) 也会把内层的流一起关闭 不用多关闭一次
InPutStreamReader — 字节流转向字符流
可以根据不同的编码格式读取
会使用到FileInputStream类
例
利用转换流读取文件 默认UTF8
FileInputStream fis =
new FileInputStream("/Users/lanou/Desktop/Test/utf8.txt");
InputStreamReader isr = new InputStreamReader(fis);
char[] c = new char[1024];
int len = 0;
while ((len = isr.read(c)) != -1) {
System.out.println(new String(c, 0, len));
}
isr.close();