(54)Java基础 --IO流 --字符型缓冲流

目录

一、BufferedReader

二、BufferedWriter

三、PrintWriter(字符打印流)


一、BufferedReader

Reader有一个子类BufferedReader。子类继承父类显然子类可以重写父类的方法,也可以增加自己的新方法。例如一次读一行就是常用的操作.那么BufferedReader 类就提供了这个方法,可以查看readLine()方法

具备 一次读取一个文本行的功能。很显然,该子类可以对功能进行增强。装饰者模式)。

高效的原因:

BufferedReader:每次调用read方法,只有第一次从磁盘中读取了8192个字符,存储到该类型对象的缓冲区数组中,将其中一个返回给调用者,再次调用read方法时,就不需要再访问磁盘,直接从缓冲区中

拿一个出来即可,效率提升了很多。

特有方法: readLine() 一次读到文件中的一行。

案例: 使用BufferedReader读取文件内容,输出到控制台上。

BufferedReader br = new BufferedReader(new FileReader("c:/bbb.txt"));
/*
String str = br.readLine();
		System.out.println(str);
		
		String str2 = br.readLine();
		System.out.println(str2);
		
		String str3 = br.readLine();
		System.out.println(str3);
		
		String str4 = br.readLine();
		System.out.println(str4);
		
		String str5 = br.readLine();
		System.out.println(str5);
		
		String str6 = br.readLine();
		System.out.println(str6);
		
		String str7 = br.readLine();  // 读到null 表示读到文件的末尾
		System.out.println(str7);*/
		String str = "";
		while((str = br.readLine())!=null){
			System.out.println(str);
		}
br.close();

二、BufferedWriter

高效的原因:

BufferedWriter:每次调用write方法,不会直接将字符刷新到文件中,而是存储到字符数组中,等字符数组写满了,才一次性刷新到文件中,减少了和磁盘交互的次数,提升了效率。

方法:

     Write()

     newLine() 写入一个换行

public class Demo15_字符缓冲流_BufferedWriter {
	public static void main(String[] args) throws Exception{
	/*	
		BufferedWriter bw = new BufferedWriter(new FileWriter("F:/aaa.txt"));
		bw.write("xxx");  // 先把数据写入缓冲区  缓存区存满或 flush时把输出刷入文件
		bw.flush();
		bw.close();
		*/
		BufferedWriter bw = new BufferedWriter(new FileWriter("F:/aaa.txt"));
	
		bw.write("xxx");  
		bw.newLine();  // 写入一个换行
		bw.write("yyy");
		
		bw.flush();
		bw.close();
	}
}

三、PrintWriter(字符打印流)

构造方式

PrintWriter(File file) 
使用指定文件创建不具有自动行刷新的新 PrintWriter。

PrintWriter(File file, String csn) 
创建具有指定文件和字符集且不带自动刷行新的新 PrintWriter。

PrintWriter(OutputStream out) 
根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。

PrintWriter(OutputStream out, boolean autoFlush) 
通过现有的 OutputStream 创建新的 PrintWriter。

PrintWriter(String fileName) 
创建具有指定文件名称且不带自动行刷新的新 PrintWriter。

PrintWriter(String fileName, String csn) 
创建具有指定文件名称和字符集且不带自动行刷新的新 PrintWriter。

PrintWriter(Writer out) 
创建不带自动行刷新的新 PrintWriter。

PrintWriter(Writer out, boolean autoFlush) 
创建新 PrintWriter。

该类中除了有write方法外,用提供了print方法和println方法,用来写数据。

案例:使用BufferedReader 和 PrintWriter完成文件拷贝。

public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new FileReader("c:/bbb.txt"));
		PrintWriter pw = new PrintWriter("D:/bbb.txt");
		
		String str = "";
		
		while((str =br.readLine())!=null){
			pw.println(str);
		}
		pw.close();
		br.close();
}

上一篇:(53)Java基础 --IO流 --转换流

下一篇:(55)Java基础 --多线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值