1、InputStream&OutputStream
均为抽象类。
读入字节(byte,二进制)
无法按一个字节读入,一般是按照某种固定的格式读入,比如每次读入10个字节。
InputStream常用的子类有FileInputStream。
OutputStream常用的子类有FileOutputStream。
2、Reader
抽象类
是按照固定的编码格式读入字符。
常用的有InputStreamReader、FileReader、BufferedReader。
InputStreamReader
构造函数:new InputStreamReader(InputStream,Charset);//字节流输入和编码格式,作为将字节流转换成字符流的中介。
FileReader
FileReader类从InputStreamReader类继承而来,可以直接接受一个文件里路径作为构造参数(String或者File类型都可以)。
BufferedReader
构造函数 new BufferedReader(Reader);//Reader一般为InputStreamReader或者FileReader。
3、Writer
抽象类
按照某种编码格式写入字符
一般使用OutputStreamWriter,FileWriter
append与write函数的区别,在于write对于null类型的字符串会报错,append会添加"null"字符串。
这两个作用均类似于Reader的InputStreamReader、FileReader,不再赘述。
4、字节流转字符流
new InputStreamReader(InputStream inpuStream);//以字节流作为参数传入转成字符流。
一般没有字符流转换成字节流,因为读取的话都是以字节来作为基础读取的。
File file=new File("test.txt");
Reader reader=new BufferReader(new InputStreamReader(new FileInputStream(file)));
5、字节和字符的转换
String order="worldabcefghijkmnpqstuvxyz";
byte[] a=order.getBytes("utf8");
new String(a,"utf8");
这个写的也挺好 https://blog.youkuaiyun.com/xiaojianpan666/article/details/80561836