Java开发笔记(八十六)通过缓冲区读写文件

本文介绍了Java中提高文件读写效率的BufferedWriter和BufferedReader。BufferedWriter通过缓存提升写文件性能,新增newLine、flush方法。BufferedReader增加了readLine、mark和reset功能。同时,展示了如何使用这两个类进行文件复制操作,强调了字符流复制文件的注意事项,特别是中文字符处理的问题。
摘要由CSDN通过智能技术生成

前面介绍了利用文件写入器和文件读取器来读写文件,因为FileWriter与FileReader读写的数据以字符为单位,所以这种读写文件的方式被称作“字符流I/O”,其中字母I代表输入Input,字母O代表输出Output。可是FileWriter的读操作并不高效,缘由在于FileWriter每次调用write方法都会直接写入文件,假如某项业务需要多次调用write方法,那么程序就会写入文件同样次数。因为写文件本质是写磁盘,磁盘的速度远不如内存,所以频繁地写文件必然严重降低程序的运行效率。为此Java又设计了缓存写入器BufferedWriter,它的write方法并不直接写入文件,而是先写入一块缓存,等到缓存写满了再将缓存上的数据写入文件。由于缓存空间位于内存之中,写入缓存等同访问内存,这样相当于把写磁盘动作替换成写内存动作,因此BufferedWriter的整体写文件性能要大大优于FileWriter。除此之外,BufferedWriter还新增了下列几个方法:
newLine:往文件末尾添加换行标记(Window系统是回车加换行)。当然实际上是先往缓存添加换行标记,并非直接往磁盘写入换行标记。
flush:立即将缓冲区中的数据写入磁盘。默认情况要等缓冲区满了才会写入磁盘,或者调用close方法关闭文件之时也会写入磁盘,但是有时程序猴急,一定要立即写入磁盘,此时就需调用flush方法强行写磁盘。
使用缓存写入器之前要先创建文件读取器对象,并获得父类Writer的实例,然后再据此创建缓存写入器对象。下面是通过缓存写入器把多行字符串写入文件的代码例子:

private static String mSrcName = "D:/test/aad.txt";
// 使用缓存字符流写入文件
private static void writeBuffer() {
	String str1 = "白日依山尽,黄河入海流。";
	String str2 = "欲穷千里目,更上一层楼。";
	File file = new File(mSrcName); // 创建一个指定路径的文件对象
	// try(...)允许在圆括号内部拥有多个资源创建语句,语句之间以冒号分隔
	// 先创建文件写入器,再根据文件读取器创建缓存写入器
	try (Writer writer = new Fil
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值