黑马程序员—字符流_BufferedReader_BufferedWriter

---------------------- android培训、java培训、期待与您交流! ---------------------- 

字符流的缓冲区

  • 缓冲区的出现提高了对数据的读写效率。
  • 对应类
    • BufferedWriter【后缀是父类,前缀是功能】
    • BufferedReader
  • 缓冲区要结合流才能使用
  • 在流的基础上对流的功能进行了增强
  • 缓冲区的出现是为了提高流的操作效率而出现的,所以在创建缓冲区之前,必须先有流对象

BufferedWriter

public class BufferedWriter
extends Writer
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。  
可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。  
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWrite {

	public static void main(String[] args) {

		FileWriter fw = null;
		BufferedWriter bf = null;
		try {
			fw = new FileWriter("Demo.txt");
			//为了提高流的写入效率,加入了缓冲技术
			bf = new BufferedWriter(fw);
			for (int i = 0; i < 5; i++) {
				bf.write("abcd" + i);
				bf.newLine();
				//只要用到缓冲区,就得记得刷新
				bf.flush();
			}
		} catch (Exception e) {
			System.out.println(e.toString());
		} finally {
			try {
				if (bf != null) {
					//其实关闭缓冲区,就是关闭缓冲区中的流对象
					bf.close();
				}
			} catch (IOException e) {
				System.out.println(e.toString());
			}
		}
	}
}


BufferedReader

public class BufferedRead
erextends Reader
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。  
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了 
public String readLine()
                throws IOException
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。  返回:  包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null  
抛出:  IOException - 如果发生 I/O 错误 
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedReader2 {

	public static void main(String[] args) {
		
		FileReader fr = null;
		BufferedReader bufr = null;
		try {
			fr =new  FileReader("Demo.txt");
			bufr = new BufferedReader(fr);
			
			String value = null;
			while((value = bufr.readLine()) != null){
				System.out.println(value);
			}
		} catch (Exception e) {
			System.out.println(e.toString());
		}finally{
			if(bufr != null){
				try {
					bufr.close();
				} catch (IOException e) {
					System.out.println(e.toString());
				}
			}
		}
	}
}

小测试:

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

/*
 * 字符读取流缓冲区;
 * 该缓冲区提供了一个一次读一行的方法readLine(),方便对于文本数据的获取。
 * 当返回null时,表示读到文件末尾。
 * readLine方法返回的时候只返回回车符之前的数据内容,并不返回回车符。
 */
public class BufferedReaderTest {

	public static void main(String[] args) {
		BufferedReader bufr = null;
		BufferedWriter bufw = null;
		
		try {
			bufr = new BufferedReader(new FileReader("Demo2.txt"));//匿名对象,因为以后不用直接操作流
			bufw = new BufferedWriter(new FileWriter("D:\\Demo2Test.txt"));
			
			String temp = null;
			while((temp = bufr.readLine()) != null){
				bufw.write(temp);
				bufw.newLine();
				bufw.flush();
			}
		} catch (Exception e) {
			throw new RuntimeException("文件读写失败");
		}finally{
			if(bufr != null){
				try {
					bufr.close();
				} catch (IOException e) {
					throw new RuntimeException("读取流关闭异常");
				}
				try {
					if(bufw != null)
						bufw.close();
				} catch (Exception e2) {
					throw new RuntimeException("写入流关闭异常");
				}
			}
		}
	}
}

---------------------- android培训、java培训、期待与您交流! ---------------------- 

你可能感兴趣的:(黑马程序员—字符流_BufferedReader_BufferedWriter)