package com.mipo.file;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 按流的功能分: 1,节点流:用于直接操作数据源 的流
* 2,过滤流:也叫处理流,是对已存在流的连接和封装,来提供更强大,灵活的读写功能。
* BufferedInputStream和BufferedOutputStream:针对字节的缓冲输入和输出流
* BufferedReader和BufferedWriter:针对字符的缓冲输入和输出流
* 缓冲流属于过滤流,也就是说缓冲流并不直接操作数据源,而是对直接操作数据源的 节点流的一个包装,以此增强它的功能。
*
* 在操作字节文件或字符文本文件时,建议使用缓冲流,这样程序的效率会更高。
* @author Administrator
*
*/
public class BufferedReaderAndBufferedWriter {
public static void main(String[] args) {
test1();
test2();
}
//用BufferReader和BufferWriter实现字符文本文件复制的功能
private static void test1 () {
FileReader fr = null;
BufferedReader br = null;
BufferedWriter bw = null;
try {
//第一步: 创建FileReader对象(节点流)
fr = new FileReader("D:\\Personal\\Desktop\\IO\\File\\demo\\readme2.txt");
//第二步:创建缓冲流对象:它是过滤流,是对节点流的包装
br = new BufferedReader(fr);
bw = new BufferedWriter(new FileWriter("D:\\Personal\\Desktop\\IO\\File\\demo\\readme3.txt"));
String str = null;
while (null != (str = br.readLine())) {//readLine()一次读取字符文本文件的一行字符
bw.write(str);//一次写入一行字符串
bw.newLine();//写入行分隔符
}
bw.flush();//刷新缓冲区
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//第三步:关闭IO流
//在使用缓冲流的过程中,当关闭缓冲流时,它会自动关闭它所包装的底层节点流。故无须再手动关闭节点流。
try {
bw.close();
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//使用系统输入流,从控制 台读取数据
private static void test2 () {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入数据:");
String str = null;
try {
str = br.readLine();//读取一行数据
while (null != str && (!"quit".equalsIgnoreCase(str))) {
System.out.println("你输入的是:"+ str);
str = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
IO缓冲流
最新推荐文章于 2023-01-27 16:36:47 发布