课程名称:JAVA输入输出流
课程章节:第5章 字符流
课程讲师: Cedar
课程内容:
1)编码问题
2)认识文本和文本文件
JAVA的文本(char)是16位的无符号整数,是字符的unicode编码(双字节编码)
文件是byte byte byte ……的数据序列
文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果
3)字符流(Reader Writer)-->操作的是文本文件
字符的处理,一次处理一个字符
字符的底层依然是基本的字节序列
4)字符流的基本实现
InputStreamReader完成byte流解析为char流,按照编码解析
OutputStreamWriter提供char流到byte流,按照编码处理
//避免乱码,要使用文件本身的编码读取
批量读取
//放入buffer字符数组,从第0个位置开始放置,最多放buffer.length,返回的是读到的字符的个数
写入文件
FileOutputStream out = new FileOutputStream(fileName);
OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8");
osw.write(buffer,0,c);
osw.flush();
5)文件读写流
FileReader fr = new FileReader(fileName);
FileWriter fw = new FileWriter(fileName,true);//在文件中追加内容
char buffer = new char[2056];
int c;
while((c = fr.read(buffer,0,buffer.length))!=-1){
fw.write(c);
fw.flush();
}
fr.close();
fw.close();
6)字符流的过滤器
BufferReader --> readLine 一次读一行
BufferWriter/PrintWriter --> 写一行
//对文件进行读写操作,一次读一行,不能识别换行符
//写入文件
bw.write(line); //需单独写入换行操作
bw.newLine(); //换行操作
PrintWriter pw = new PrintWriter(fileName);
pw.println(line);
课程收获:
几天的课程学习到了字节流、文件流的6种主要的对象,涉及方法较多,还需要后续继续实践体验。