Day21
01FileReader FileWriter
1. FileReader它的直接父类是 inputStreamReader( ), 爷爷类是Reader
int read( ) //读取单个字符, 返回int是单个字符对应的码表值, 转成char就是单个字符
int read(char[] c) //读取一个字符数组
2. FileWriter的直接父类是 outputStreamWriter( );
void write(String s) //可以直接输入一个字符串, 底层实际上也是将字符串转换为字节, 写到文本中再依靠编码表翻译成中文
void writer(int i)
void writer(char[] c)
void close() //Writer中有一个大小为2048的缓冲区, 如果不关流的话缓冲区的字符就不会读出, 关流可以刷新缓冲区,读出剩余字符, 只有Writer有这个特点??? 并不是, 带有缓冲区的都有这个特点
02什么时候使用字符流,什么时候使用字节流
1. 拷贝纯文本的文件(能用记事本打开, 而且能看的懂得文件(.txt, .java ....))时 用字节流 (字节流更高效)
其实字符流也可以拷贝纯文本文件, 但是效率会低
2. 只读或只写纯文件可以使用字符流
3. 拷贝非纯文本文件必须使用字节流, 用字符流会乱码
因为如果使用字符流,在写入的时候, 将字节流转换成字符流, 可能某些字节在转换成字符的时候, 可能找不到对应的编码, 用问号代替,
在写出的时候就会写错, 所以文件会乱码
07BufferedReader readLine( ),BufferedWriter writeLine( ) 重要的特有方法! 可以读取一行和写入一行
1. bufferedreader是reader的直接子类, 实现了reader的高效读取,
String readLine() //每次读取一个文本行,遇到\r\n代表读完了本行,不包括换行符,
2. BufferedWriter
构造方法:
BufferedWriter(Reader in); //需要传入一个Reader的子类对象
String newLine( ); //读取一个换行符, 是一个跨平台的换行符
|