缓冲流

2017-09-07  本文已影响0人  Mango_yes

缓冲流是为了读取和写入的速度,提高效率主要包括:字节缓冲流和字符缓冲流

字节缓冲流:

根据流的方向,共有2个:字节缓冲输出流BufferedOutputStream和字节缓冲输入流BufferedInputStream,它们的内部都包含了一个缓冲区,通过缓冲区读写,就可以提高了IO流的读写速度

构造方法:public BufferedOutputStream(OutputStream out);

//创建基本的字节输出流

FileOutputStream fileOut=newFileOutputStream("abc.txt");

//使用高效的流,把基本的流进行封装,实现速度的提升

BufferedOutputStream out=newBufferedOutputStream(fileOut);

//2,写数据

out.write("hello".getBytes());

//3,关闭流

out.close();

}

构造方法:public BufferedInputStream(InputStream in);

FileInputStream fileIn =newFileInputStream("abc.txt");

//把基本的流包装成高效的流

BufferedInputStream in =newBufferedInputStream(fileIn);

//2,读数据

int ch = -1;

while( (ch = in.read()) != -1 ) {

//打印

System.out.print((char)ch);

}

//3,关闭

in.close();

高效的实现复制文件;

BufferedInputStream in =newBufferedInputStream(newFileInputStream("c:\\a.txt"));

//2,指定目的地

BufferedOutputStream out=newBufferedOutputStream(newFileOutputStream("c:\\b.txt"));

//3,读数据

byte[] buffer =newbyte[1024];

intlen = -1;

while( (len = in.read(buffer)) != -1) {

//4,写数据

out.write(buffer, 0, len);

}

//5,关闭流

in.close();

out.close();

字符缓冲流:

字符缓冲输入流BufferedReader。字符缓冲输出流BufferedWriter

BufferedWriter

//创建流

//基本字符输出流

FileWriter fileOut =newFileWriter("file.txt");

//把基本的流进行包装

BufferedWriter out =newBufferedWriter(fileOut);

//2,写数据

for(inti=0; i<5; i++) {

out.write("hello");

out.newLine();//写入换行

}

//3,关闭流

out.close();

}

BufferedReader

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

publicStringreadLine()读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回null

//1,创建流

BufferedReader in =newBufferedReader(newFileReader("file.txt"));

//2,读数据

//一次读取文本中一行的字符串内容

String line =null;

while( (line = in.readLine()) !=null){

System.out.println(line);

}

//3,关闭流

in.close();

使用缓冲流高效的完成文件的复制

//1,指定数据源,是数据源中读数据,采用输入流

BufferedReader in =newBufferedReader(newFileReader("file.txt"));

//2,指定目的地,是把数据写入目的地,采用输出流

BufferedWriter out =newBufferedWriter(newFileWriter("copyFile.txt"));

//3,读数据

String line =null;

while( (line = in.readLine()) !=null) {

//4,写数据

out.write(line);

//写入换行符号

out.newLine();}

//5,关闭流

out.close(); in.close();

}

这么多流该如何选择:

目的设备:

硬盘:文件File开头。

内存:数组,字符串。

屏幕:System.out

网络:Socket

完全可以明确具体要使用哪个流对象。

知识点总结

字节流

字节输入流InputStream

FileInputStream操作文件的字节输入流

BufferedInputStream高效的字节输入流

字节输出流OutputStream

FileOutputStream操作文件的字节输出流

BufferedOutputStream高效的字节输出流

字符流

字符输入流Reader

FileReader操作文件的字符输入流

BufferedReader高效的字符输入流

InputStreamReader输入操作的转换流(把字节流封装成字符流)

字符输出流Writer

FileWriter操作文件的字符输出流

BufferedWriter高效的字符输出流

OutputStreamWriter输出操作的转换流(把字节流封装成字符流)

方法:

读数据方法:

read()一次读一个字节或字符的方法

read(byte[]char[])一次读一个数组数据的方法

readLine()一次读一行字符串的方法(BufferedReader类特有方法)

readObject()从流中读取对象(ObjectInputStream特有方法)

写数据方法:

write(int)一次写一个字节或字符到文件中

write(byte[] char[])一次写一个数组数据到文件中

write(String)一次写一个字符串内容到文件中

uwriteObject(Object )写对象到流中(ObjectOutputStream类特有方法)

unewLine()写一个换行符号(BufferedWriter类特有方法)

向文件中写入数据的过程

1,创建输出流对象

2,写数据到文件

3,关闭输出流

从文件中读数据的过程

1,创建输入流对象

2,从文件中读数据

3,关闭输入流

l文件复制的过程

1,创建输入流(数据源)

2,创建输出流(目的地)

3,从输入流中读数据

4,通过输出流,把数据写入目的地

5,关闭流

上一篇下一篇

猜你喜欢

热点阅读