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 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();
}
}
}
}运行结果:
缓冲流是处理流的一种,建立在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,还增加了一些新的方法
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();
}
}
}
}运行结果:
相关文章推荐
- 【幻化万千戏红尘】qianfengDay18-java基础学习:文件流、内存流、缓冲流
- 【java的 IO流之缓冲流】
- Java IO之打印流,缓冲流,Scanner的用法
- java例程练习(缓冲流)
- Java学习笔记之IO流中的缓冲流
- Java笔记5 IO<2>缓冲流、转换流
- JAVA io流 文件流 字节流 字符流 过滤流 缓冲流
- java中的包装流和缓冲流概述
- java中的缓冲流BufferedWriter和BufferedReader
- java例程练习(缓冲流)
- java io 缓冲流
- Java中的缓冲流(高效流)、双列集合、序列化与反序列化
- Java中缓冲流、特殊集合Porperties、序列化和反序列化
- Java学习总结(7)——(File类,IO流,(缓冲流,转换流等),Properties类)
- Java学习笔记之输入输出流(二) 缓冲流、随机流、数组流、数据流、对象流
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
- JAVA输入/输出流(字节流、字符流、缓冲流)
- [Java IO源码]缓冲流的实现原理
- 10040---Java IO --缓冲流
- 杰神之Java缓冲流和序列化的用法