黑马程序员_IO流(三)字符流的缓冲区

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

字符流的缓冲区。

1、提高读写效率。

2、对应类:

public class BufferedWriter extends Writer
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
构造方法摘要 
BufferedWriter(Writer out) 
创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz) 

创建一个使用给定大小输出缓冲区的新缓冲字符输出流。

创建缓冲区之前,必须要先有流对象。
import java.io.*;
class BufferedWriterDemo 
{
	public static void main(String[] args) throws IOException
	{
		//创建一个字符写入流对象。
		FileWriter fw = new FileWriter("buffered.txt");
		//为了提高字符写入流的效率,加入缓冲技术。
		//只需要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可。
		BufferedWriter bufw = new BufferedWriter(fw);

		bufw.write("abcdef -- Buffered Test.");
		//用到缓冲区时,需要刷新。
		bufw.flush();
		//关闭缓冲区和流对象。两者同时关闭。
		bufw.close();
	}
}

字符流的缓冲区:

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

readLine() 读取一个文本行。

import java.io.*;
class BufferedReaderDemo 
{
	public static void main(String[] args) throws IOException
	{
		FileReader fr = new FileReader("buffered.txt");
		//将字符流对象作为参数传递给缓冲对象的构造函数。
		BufferedReader bufr =new BufferedReader(fr);
		//读取一个问本行。循环读所有文本行。
		String s = null;
		while ((s = bufr.readLine()) != null)
		{
			System.out.println(s);
		}
	}
}

用缓冲区复制文件

import java.io.*;
class CopyTextByBuf 
{
	public static void main(String[] args)
	{
		BufferedReader bufr = null;
		BufferedWriter bufw = null;
		try
		{
			bufr = new BufferedReader(new FileReader("CopyTextByBuf.java"));
			bufw = new BufferedWriter(new FileWriter("CopyTextByBuf.txt"));
			String line = null;
			while ((line = bufr.readLine()) != null)
			{
				bufw.write(line);
				bufw.newLine();
				bufw.flush();
			}
		}
		catch (IOException e)
		{
			throw new RuntimeException("文件读写失败");
		}
		finally
		{
			try
			{
				if (bufw != null)
				{
					bufw.close();
				}
			}
			catch (IOException e)
			{
				throw new RuntimeException("文件写关闭失败");
			}

			try
			{
				if (bufw != null)
				{
					bufr.close();
				}
			}
			catch (IOException e)
			{
				throw new RuntimeException("文件读关闭失败");
			}
		}
	}
}

设置和获取当前行号

public class LineNumberReader
extends BufferedReader
跟踪行号的缓冲字符输入流。此类定义了方法 setLineNumber(int) 和 getLineNumber(),它们可分别用于设置和获取当前行号。
import java.io.*;
class LinenumberReaderDemo 
{
	public static void main(String[] args) throws IOException
	{
		FileReader fr = new FileReader("buffered.txt");
		LineNumberReader lnr = new LineNumberReader(fr);
		String line = null;
		//设置起始行号
		lnr.setLineNumber(100);
		while ((line = lnr.readLine()) != null)
		{
			//打印行号和行内容。		
			System.out.println(lnr.getLineNumber()+" : "+line);
		}
	}
}




------- android培训java培训、期待与您交流! ----------
详细请查看:http://edu.csdn.net/heima/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值