`
schy_hqh
  • 浏览: 551846 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(IO)带缓冲区的字符读写BufferedReader,BufferedWriter

 
阅读更多

 

BufferedReader & BufferedWriter

 

关键,效率是如何提高的---缓冲数据:

通过BufferedReader的read()读取数据,实际上已经是对内存中缓冲区的数据进行读取,而不是每次去磁盘上读取1个字符了(java已经事先将一部分数据缓冲到了数组中)

通过BufferedWriter的write()写数据,实际上是将数据写到内存中的缓冲区中(写到数组中,等待flush()将其刷新到文件中)

 

它们内部都已经提供了操作字符数据的缓冲区,因此不需要再手动设置缓冲区;

而且,BufferedReader提供了readLine()读取一行数据;

BufferedWriter提供了newLine()创建新行的功能;

使用起来很方便!

 

 

package com.gc.file;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedDemo {
	public static void main(String[] args) {
		testBufferedWriter();
		testBufferdReader();
	}
	
	/**
	 * BufferdReader内部提供缓冲区对字符数据进行缓冲,提高效率
	 * 可以手动指定缓冲区大小,一般默认即可
	 */
	private static void testBufferdReader() {
		BufferedReader bufr = null;
		try {
			FileReader fr = new FileReader("temp\\buffered.txt");
			
			bufr = new BufferedReader(fr);
			
			String line = "";
			
			//按行读取文本内容
			while((line=bufr.readLine())!=null) {
				System.out.println(line);
			}
			
		} catch (FileNotFoundException e) {
			throw new RuntimeException("读取失败");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if(bufr!=null)
				try {
					bufr.close();//内部为fr.close()!
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
	}

	/**
	 * BufferedWriter内部提供了缓冲区对数据进行缓冲
	 * 可以手动指定缓冲区大小,一般使用默认的即可
	 */
	public static void 	testBufferedWriter() {
		BufferedWriter bufw = null;
		try {
			FileWriter fw = new FileWriter("temp\\buffered.txt");
			
			//BufferedWriter内部提供了缓冲区对字符数据进行缓冲
			bufw = new BufferedWriter(fw);
			
			bufw.write("first line");
			
			//换行
			bufw.newLine();
			
			bufw.write("second line");
			
		} catch (IOException e) {
			throw new RuntimeException("写入失败");
		} finally {
			if(bufw!=null)
				try {
					//实际上这里会做2件事:1.刷新缓冲区 2.关闭fw流
					bufw.close();
				} catch (IOException e) {
					throw new RuntimeException("关闭流失败");
				}	
		}
		
	}
}

 

 

分享到:
评论

相关推荐

    Java中BufferedReader与BufferedWriter类的使用示例

    总的来说,`BufferedReader`和`BufferedWriter`是Java I/O中用于提高效率的关键工具,它们通过内存缓冲区实现了对字符流的高效处理,是进行大量字符读写操作时的首选。使用这些类可以显著减少磁盘I/O操作,从而提升...

    Java IO字符流缓冲区实现原理解析

    缓冲区是Java IO字符流中的一种机制,它可以将数据暂存起来,以便提高读写效率。在本文中,我们将深入探讨Java IO字符流缓冲区实现原理解析,包括缓冲区的概念、实现原理、使用方法和优点等方面。 缓冲区的概念 ...

    JavaIO实例_字节流_字符流_缓冲流_转换流IODemo

    - 示例:`BufferedReader`和`BufferedWriter`提供了缓冲功能,提高读写效率;` FileReader`和`FileWriter`专门用于读写文件中的字符数据。 3. **缓冲流**: - 缓冲流是在原始流基础上添加了缓冲区,可以提高数据...

    Java IO学习基础之读写文本文件

    Java中提供了`BufferedReader`和`BufferedWriter`来支持字符缓冲流的操作,它们分别继承自`Reader`和`Writer`类,并且内部维护了一个固定大小的缓冲区。 #### 三、读写文本文件示例详解 以下是对给定示例程序的...

    Java学习IO流小结--字符流

    - `BufferedReader(Reader in)`:创建一个带有默认大小缓冲区的`BufferedReader`。 - `BufferedReader(Reader in, int size)`:创建一个具有指定大小缓冲区的`BufferedReader`。 - `BufferedWriter(Writer out)`...

    字节流字符流练习

    NIO中的通道(Channel)和缓冲区(Buffer)概念,以及选择器(Selector)的使用,为IO操作提供了更多的灵活性和性能提升。 通过本练习文档,你将有机会亲手实践这些IO流的使用,包括创建、读写文件,以及流的连接和...

    Java中缓冲区读者与缓冲区写者.pdf

    在Java编程中,缓冲区读者(BufferedReader)和缓冲区写者(BufferedWriter)是处理输入输出流的重要工具,它们提高了I/O操作的效率。这些类位于java.io包中,是字符流处理的一部分,主要用于文本数据的读写。本篇将深入...

    如何用java实现不同编码方式字符串的转换(包含异常处理、重复不终止输入、缓冲区bufferedreader的使用)

    `BufferedReader`提供了一种高效读取字符流的方式,它使用内部缓冲区来提高性能。我们可以使用`readLine()`方法读取一行文本,直到用户输入特定的结束标志。以下是一个示例: ```java import java.io....

    JavaIO实例|字节流|字符流|缓冲流|转换流IODemo

    在Java中,IO流被设计用来在不同的数据源和目的地之间传输数据,如文件、网络连接、内存缓冲区等。本教程将详细介绍Java IO中的字节流、字符流、缓冲流以及转换流,并通过IODemo实例来展示它们的用法。 ### 1. 字节...

    java字符流缓冲区详解

    Java 字符流缓冲区是 Java 中用于提高 IO 操作效率的一种机制,它通过在内存中缓存一部分数据,然后批量写入或读取,以提高流的读写效率。在 Java 中,BufferedReader 和 BufferedWriter 是两个常用的缓冲类,它们...

    用java IO流复制文本内容(包含中文字符)

    在这种情况下,我们通常会使用`BufferedReader`和`BufferedWriter`这两个类,它们都是Java的字符流类,提供了缓冲功能,可以提高读写效率。 描述中提到的"BufferedReader/BufferedWriter 实现从字节流到字符流的...

    Java IO 字节流 字符流

    此外,Java还提供了一些缓冲流,如BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter,它们提高了读写性能,通过内部缓冲区批量处理数据。这些缓冲流可以在字节流和字符流上进行包装,...

    Java BufferedWriter BufferedReader 源码分析

    Java的BufferedWriter和BufferedReader是Java IO流中用于提高读写效率的两个关键类。它们都通过内部缓冲区来批量处理数据,从而减少对底层流的直接操作次数,提高性能。 **BufferedWriter** BufferedWriter是一个...

    Java中缓冲字符流.pdf

    首先,`BufferedReader`和`BufferedWriter`是Java `java.io`包中的一部分,它们分别用于读取和写入字符数据。这两个类提供了一个内部缓冲区,允许我们批量处理字符,而不是一次处理一个,从而提高了性能。 1. **...

    IO流的主要流

    - **字符缓冲流**:BufferedReader和BufferedWriter提供高效的字符读写功能,通过内部缓冲区提升性能。BufferedReader适合读取大型文本文件,而BufferedWriter则用于高效写入字符数据。 - **PrintWriter**:这是一...

    java中的IO操作总结(一)

    java中的IO操作总结(一) 所谓IO,也就是Input与Output的缩写。在java中,IO涉及的范围比较大,这里主要讨论针对文件...BufferedWriter和BufferedReader能够提供缓冲区功能,用以提高效率 解压密码 www.jiangyea.com

    IO文件读取

    这些类通过内部缓冲区来优化读写速度,适用于读取大文件: ```java BufferedReader br = new BufferedReader(new FileReader("example.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("example...

    javaIO字符流文件写入总结共1页.pdf.zip

    - 使用缓冲区(如`BufferedReader`和`BufferedWriter`)可以显著提高读写性能,因为它们会一次性处理多个字符,减少系统调用次数。 8. **PrintWriter的高级特性** - `PrintWriter`提供了诸如`println()`、`printf...

    java IO(下)

    **BufferedReader** 和 **BufferedWriter** 分别是针对字符输入流和字符输出流的处理流,它们使用内部缓冲区来提高读写效率,并支持按行读写。 ##### BufferedReader **构造函数**: - `BufferedReader(Reader in)`...

    Java IO流之字符缓冲流实例详解

    无论是`BufferedInputStream`和`BufferedOutputStream`(用于字节流)还是`BufferedReader`和`BufferedWriter`(用于字符流),它们都遵循同样的设计理念:通过内部的缓冲区优化数据传输,从而提高读写性能。...

Global site tag (gtag.js) - Google Analytics