您的位置:首页 > 编程语言 > Java开发

Java--缓冲流

2018-04-03 16:37 309 查看
一:缓冲流
   缓冲流是处理流的一种,建立在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,还增加了一些新的方法
JDK提供四种缓冲流
BufferedInputStream (缓冲字节输入流)可以对任何的InputStream流进行包装
BufferedOutputStream (缓冲字节输出流)可以对任何的OutputStream流进行包装
flush()       刷新缓冲输出流。
write(byte[] b, int off, int len) 写 len字节指定字节数组中的起始偏移 off这个缓冲输出流。
write(int b) 将指定的字节写入该缓冲输出流中。
BufferedReader (缓冲字符输入流)可以对任何的Reader流进行包装
新增了readLine()方法用于一次读取一行字符串
BufferedWriter (缓冲字符输出流)可以对任何的Writer流进行包装
新增了newLine()方法用于写出一个行分隔符 
  对于缓冲输出流,写出的数据会先缓存在内存缓冲区中,关闭此流前要用flush()方法将缓存区的数据立刻写出。
     关闭缓冲流时,会自动关闭缓冲流所包装的所有底层流package buffer;
import java.io.*;
public class BufferedInputStreamDemo {

public static void main(String[] args) {
File f=new File("f:"+File.separator+"qmshy.mpg");
InputStream input=null;
BufferedInputStream bis=null;
try {
input=new FileInputStream(f);
bis=new BufferedInputStream(input); // 将FileInputStream包装到BufferedInputStream缓冲流中
int data=0;
System.out.println("使用缓冲开始读取...");
while((data=bis.read())!=-1){
// System.out.print((char)data);
}
System.out.println("使用缓冲读取结束!");
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
bis.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package buffer;
import java.io.*;
public class BufferedOutputStreamDemo {
public static void main(String[] args) {
File f=new File("c:"+File.separator+"test.txt");
OutputStream out=null;
BufferedOutputStream bos=null;
try {
out=new FileOutputStream(f,true);   // 启用追加模式
bos=new BufferedOutputStream(out);   // 将FileOutputStream包装到BufferedOutputStream缓冲输出流
bos.write("hello,字节缓冲输出流".getBytes());
bos.flush();
System.out.println("写入成功!");
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
bos.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行结果:



package buffer;
import java.io.*;
public class BufferedReaderDemo {
public static void main(String[] args) {
File f=new File("c:"+File.separator+"test.txt");
int count=0;
Reader r=null;
BufferedReader br=null;
try {
r=new FileReader(f);
br=new BufferedReader(r); // 使用BufferedReader包装FileReader
String line=""; // 存储获取到的行内容
while((line=br.readLine())!=null){
count++;
System.out.println(count+"\t"+line);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
br.close();
r.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}运行结果:


package buffer;
import java.io.*;
public class BufferedWriterDemo {
public static void main(String[] args) {
File f=new File("c:"+File.separator+"test.txt");
Writer w=null;
BufferedWriter bw=null;
try {
w=new FileWriter(f,true);
bw=new BufferedWriter(w); // 将FileWriter包装到BufferedWriter中
bw.write("锄禾日当午");
bw.newLine(); // 写入换行
bw.write("汗滴禾下土");
bw.newLine(); // 写入换行
bw.write("谁知盘中餐");
bw.newLine(); // 写入换行
bw.write("粒粒皆辛苦");
bw.newLine(); // 写入换行
bw.flush(); // 输入到磁盘
System.out.println("写入成功!");
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
bw.close();
w.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JavaSE