JAVA基础IO2

字节缓冲区流

字节缓冲区流作用:
字节流一次读写一个数组的速度比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区效果,java本身在设计的时候,也考虑到了这样的设计思想,所以提供了字节缓冲区流。
BufferedOutputStream:字节缓冲输出流
BufferedInputStream:字节缓冲输入流

转换流

转换流出现的原因:
字节流读数据时,一次读取一个字节的方式读取带有汉字的文件是有问题的,因为汉字是由两个字节组成的。
文件复制的时候,字节流读取一个字节,写入一个字节,这个没有出现问题,是因为最终底层会根据字节做拼接,得到汉字。
转换流的构造方法:
OutputStreamWriter 字符输出流
public OutputStreamWriter(OutputStream out)
根据默认编码把字节流的数据转换为字符流
public OutputStreamWriter(OutputStream out,String charsetName)
根据指定编码把字节流数据转换为字符流
InputStreamReader 字符输入流
public InputStreamReader(InputStream in)
用默认的编码读数据
public InputStreamReader(InputStream in,String charsetName)
字符流
OutputStreamWriter写数据的5种方式:
OutputStreamWriter写数据的5种方式:
public void write(int c):写一个字符
public void write(char[] cbuf):写一个字符数组
public void write(char[] cbuf,int off,int len):写一个字符数组的一部分
public void write(String str):写一个字符串
public void write(String str,int off,int len):写一个字符串的一部分

InputStreamReader读数据的2种方式:
public int read():一次读取一个字符
public int read(char[] cbuf):一次读取一个字符数组

FileWriter和FileReader
转换流的名字比较长,而我们常见的操作都是按照本地默认编码实现的,所以,为了简化我们的书写,转换流提供了对应的子类。
FileWriter
FileReader

字符流缓冲区流

BufferedWriter
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。
构造方法:
BufferedWriter(Writer out)
BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
构造方法:
BufferedReader(Reader in)

字符缓冲区流特殊功能
BufferedWriter
void newLine():写入一个行分隔符,这个行分隔符是由系统决定的

BufferedReader
String readLine():包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

猜你喜欢

转载自www.cnblogs.com/hatcher-h/p/12902755.html