**
IO:缓冲流
**
开发工具与关键技术:MyEclipse 10/Java
撰写时间:2019年06月02日
缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写效率, 同时增加了一些新的方法。
四种缓冲流 BufferedReader(Reader in) BufferedReader(Reader in,int sz)//sz 表示自定义缓冲区大小
BufferedWriter(Writer out) BufferedWriter(Writer out,int sz)
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in,int sz) BufferedOutputStream(OutputStream out) BufferedOutputStream(OutputStream out,int sz)
BufferedReader 提供 readLine 方法用于读取一行字符串。 BufferedWriter 提供了 newLine 方法用于写入一个行分隔符。等价于//.writer("\r\n");
对于输出的缓冲流,写出的数据会先在内存中缓冲,使用 flush 方法将会使内存中的数据立 刻写出。
Eg:
public class ArrayStreamTest {
public static void main(String[] args) throws IOException {
String str1 = "访问 byte[] 和 char[]的IO流 ;";
String str2 = "ByteArrayInputStream ByteArrayOutputStream;";
String str3 = "CharArrayReader CharArrayWriter;";
//ByteArrayInputStream 该缓冲区包含从流中读取的字节 ByteArrayOutputStream 此类实现了一个输出流
ByteArrayOutputStream out=new ByteArrayOutputStream();
out.write(str1.getBytes());out.write(str2.getBytes());
out.write(str3.getBytes());
//转换为byte数组
byte[] bs=out.toByteArray();
ByteArrayInputStream in=new ByteArrayInputStream(bs);
byte[] bs2=new byte[1024];
int count=0;
while ((count=in.read(bs2, 0, bs2.length))!=-1) {
System.out.println(new String(bs,0,count));
}//ByteArrayInputStream ByteArrayOutputStream 不需要关闭流
//CharArrayReader 此类实现一个可用作字符输入流的字符缓冲区 CharArrayWriter 可用作 Writer 的字符缓冲区
CharArrayWriter writer=new CharArrayWriter();
writer.write(str1); writer.write(str2); writer.write(str3);
char[] chars=writer.toCharArray();
CharArrayReader reader=new CharArrayReader(chars);
char[] cs=new char[200];
while((count=reader.read(cs, 0, cs.length))!=-1) {
System.out.println(new String(cs,0,count));
}}}