桥接转换流
InputStreamReader和OutputStreamWriter是java.io包中用于处理字符流的最基本的类,用来在字节
流和字符流之间作为中介:从字节输入流读入字节,并按编码规范转换为字符;往字节输出流写字符时
先将字符按编码规范转换为字节。使用这两者进行字符处理时,在构造方法中应指定一定的平台规范, 以便把以字节方式表示的流转换为特定平台上的字符表示。 转换流可以在构造时指定其编码字符集
InputStreamReader用于将一个InputStream类型的输入流自动转换为Reader字符流 OutputStreamWriter用于将一个Writer字符输出流转换为OutputStream字节输出流
InputStreamReader构造器
InputStreamReader(InputStream)
InputStreamReader(InputStream, String)
InputStreamReader(InputStream, Charset)
InputStreamReader(InputStream, CharsetDecorder)
缓冲流
缓冲流是套接在响应的节点流之上,对续写的数据提供缓冲的功能,提高读写的效率,同时增加了一些新方法
以介质是硬盘为例,字节流和字符流的弊端:在每一次读写的时候,都会访问硬盘。 如果读写的频率比 较高的时候,其性能表现不佳。为了解决以上弊端,采用缓存流。
缓存流在读取的时候,会一次性读较多的数据到缓存中,以后每一次的读取,都是在缓存中访问,直到 缓存中的数据读取完毕,再到硬盘中读取。
构造方法
BufferedReader(Reader)不定义缓存大小,默认8192
BufferedReader(Reader in, int size)size为自定义缓冲区的大小
BufferedWriter(Writer)
BufferedWriter(Writer out, int size)size为自定义缓冲区的大小
BufferedInputStream(InputStream)
BufferedInputStream(InputStream in, int size)size为自定义缓冲区的大小 BufferedOutputStream(OutputStream)
BufferedOutputStream(OuputStream out, int size)size为自定义缓冲区的大小
缓冲输入流的方法
BuffedReader提供了一个方法readLine():String,但是BufferedInputStream中并没有这个 BufferedReader提供了readLine方法用于读取一行字符串,以\r或\n分割(换行符)
如果读取内容为null,则表示读取到了流的末尾
readLine方法会自动剔除本行内容末尾的换行符
BufferedWriter提供了newLine方法用于写入一个行分隔符
对于输出的缓冲流,写入的数据会先在内存中缓存,使用flush方法会使内存中的数据立即写出
键盘录入
System.in:InputStream用于指代系统默认的输入设备—键盘 方法read():int 可以实现代码执行到这里则会阻塞等待,只要输入数据为止