经常有下面的写法,指定文件名和编码,读取文件
new BufferedReader(new InputStreamReader(new FileInputStream(new File("file")), "GBK"));
简化一下也就是 文件--比特(byte)流--包装成字符(char)--包装成缓冲
new BufferedReader(new Reader(new InputStream( new File("file")), "UTF-8"));
InputStream是基于文件或者网络之类的得到的
Reader是包装了这个InputStream
Buffered就是再包装了一下
Stream是内容,Reader,Buffered之类的是基于内容的服务!
- 关键点1是原始的Stream是从哪里来的??? 文件?网络?
- 关键点2是在打开Stream时候可以指定编码,指定流内容的编码帮助java解码从而将流中的数据从Byte变成Char,char是unicode
- 关键点3 java提供的io相关的api虽然有很多的类,但是大多是基于接口的和抽象类调用的。理清楚InputStream,OutputStream和Reader,Writer之间的关系对如何使用API很有帮助