bufferreader与bufferwrite以及用法与readline()方法原理自述总结

缓存可以说是I/O的一种性能优化。缓存流为I/O流增加了内存缓存区。有了缓存区,使得在流上执行skip()、mark()、reset()、方法都成为可能。

特点:

缓存区的出现提高了对数据读写的效率。

缓存区要结合流才能实现。

缓存区在流的基础上对流的功能进行了加强。

BufferedReader:

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组、行的高效读取。

构造方法:

BufferedReader(reader in)

创建一个默认大小输入缓存区的字符输入流

BufferedReader(reader in, int sz)


创建一个给定大小输入缓存区的字符输入流

方法:


read();读取单个字符

read(char[] chuf, int off , int len );将字符读入数组的某一部分

readLine();读取一个文本行


实例:


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Bufferedreader {
	
	public static void main(String[] args) throws IOException {
		
	
			FileReader fr = new FileReader("D:\\1.txt");
			BufferedReader br = new BufferedReader(fr);
			String str = null;
//                      <span style="background-color: rgb(240, 240, 240);">到NULL的时候,说明读到末尾</span>
			while((str=br.readLine())!=null){
				System.out.println(str);
	}

			br.close();
}

}

用BufferedReader写的一个小demo,用readLine()方法一行一行读取数据,方便对文本数据的获取,到NULL的时候,说明读到末尾。然后打印数据,最后关闭缓冲流。

readline()方法原理:


readline()的底层实现也是read()方法,也是一次读一个的方法。当readline()读取一个一个的数据暂时取到自己封装的数组当中,当取到换行符的时候,自动把以上取到的数组变成一个字符串,输出出来。

BufferedWriter:

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组、字符串的高效写入。

构造方法:


BufferedWriter(writer out)

创建一个默认大小输出缓存区的字符输出流


BufferedWriter(writer out , int sz)

创建一个给定大小输出缓存区的字符输出流


方法:

close()——关闭缓存区字符输出流


flush()——刷新流缓存数据,实时更新


write()——写入字符

newLine()——写入一个行分隔符,也是该缓存区中提供一个快平台的换行符

实例:


import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Bufferedwriter {

	public static void main(String[] args) throws IOException {

//		字符写入流
		FileWriter fw = new FileWriter("D:\\1.txt");
//		缓冲输出流
		BufferedWriter bw = new BufferedWriter(fw);
//		输出字符串
		bw.write("asdflkjasdlfjla");
//		刷新缓冲流
		bw.flush();
//		关闭缓冲流
		bw.close();
	

}
}



用法:

用缓冲区复制文件。

</pre><pre name="code" class="java"><pre name="code" class="java"><pre name="code" class="java">public class CopyText {

	public static void main(String[] args) {
		// 声明缓冲输入输出
		BufferedReader bis = null;
		BufferedWriter bos = null;

		// 可能有异常 要try catch
		try {
			// 创建缓冲输入,写出根路径
			bis = new BufferedReader(new FileReader("D:\\1.txt"));
			// 创建缓冲输出,写出复制文件路径
			bos = new BufferedWriter(new FileWriter("D:\\2.txt"));
			// 判断文件字节是否完结,无则继续写入复制文件。
			String line = null;
			while ((line=bis.readLine())!=null) {
				//读取写入
				bos.write(bis.read());
				bos.flush();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 关闭输入流
			try {
				if (bis!=null) {
					bis.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			// 关闭输出流
			try {
				if (bos!=null) {
					bos.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}

		}

	}

}
 
 
 
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值