5-1 字节字符转换流
2、字符流
1)编码问题
2)认识文本和文本文件
Java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)
文件是byte byte byte...的数据序列
文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果
3)字符流(Reader Writer)————操作的是文本文本文件
字符的处理,一次处理一个字符
字符的底层任然是基本的字节序列
字符流的基本实现
InputStreamReader 完成byte流解析为char流,按照编码解析
OutputStreamWriter 提供char流到byte流,按照编码处理
package com.imooc.unit5;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class IOsRWdemo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileInputStream in=new FileInputStream("d:\\imooc.txt");
InputStreamReader isr=new InputStreamReader(in);//默认项目的编码gbk,操作的时候,要写文件本身的编码格式
FileOutputStream out=new FileOutputStream("d:\\imooc.txt");
OutputStreamWriter osw=new OutputStreamWriter(out,"utf-8");//注意编码问题
//InputStreamReader isr=new InputStreamReader(in,"utf-8");//指定编码utf-8
// int c;
// while((c=isr.read())!=-1)
// System.out.print((char)c);
/*批量读取,放入buffer这个字符数组,从第0个位置开始放置,最多放buffer.length个
* 返回的是读到的字符的个数
*/
char[] buffer=new char[8*1024];
int c;
while ((c=isr.read(buffer, 0, buffer.length))!=-1){
String s=new String(buffer,0,c);
System.out.println(s);
}
}
}