IO缓冲流

9 篇文章 0 订阅
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();
			}
		}
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值