BufferedReader与BufferedWriter的故事

1 篇文章 0 订阅

一.Reader与Writer
Reader与Writer是Java输入输出流中的字符流,Reader负责从指定文件当中读取内容
Writer负责将指定内容写入到指定文件当中。

二.BufferedReader
BufferedReader是Reader的直接子类从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。 可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。BufferedReader与 BufferedWriter都是字符流的包装类,也是一种高级流。
构造方法:
BufferedReader(Reader in)
创建使用默认大小的输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)
创建使用指定大小的输入缓冲区的缓冲字符输入流。
方法:
void close()
关闭流并释放与之相关联的任何系统资源。
Stream lines()
返回一个 Stream ,其元素是从这个 BufferedReader读取的行。
void mark(int readAheadLimit)
标记流中的当前位置。
boolean markSupported()
告诉这个流是否支持mark()操作。
int read()
读一个字符
int read(char[] cbuf, int off, int len)
将字符读入数组的一部分。
String readLine()
读一行文字。
boolean ready()
告诉这个流是否准备好被读取。
void reset()
将流重置为最近的标记。
long skip(long n)
跳过字符

利用BufferedReader读取文件实例:

 String name="D:"+File.separator+"a"+File.separator+"test.txt";
		 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(name),"GBK"));
        int i=0;
		String str=null;
		 while((str=bufferedReader.readLine())!=null) {
			 String str1=new String(str.getBytes(),"utf-8");
			 System.out.println(str1);
		 }
		 bufferedReader.close();

三.BufferedWriter
BufferedWriter是Writer的字节子类将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。,可以指定缓冲区大小,或者可以接受默认大小。 默认值足够大,可用于大多数用途。

构造方法:
BufferedWriter(Writer out)
创建使用默认大小的输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz)
创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。
方法:
void close()
关闭流,先刷新。
void flush()
刷新流。
void newLine()
写一行行分隔符。
void write(char[] cbuf, int off, int len)
写入字符数组的一部分。
void write(int c)
写一个字符
void write(String s, int off, int len)
写一个字符串的一部分。

综合实例:
事先在当前目录下准备好一个 test.txt 的文本文件,要求该文本文件是使用 GBK 编码的
多行文本文件。如:
test.txt
窗前明月光
疑是地上霜
举头望明月
低头思故乡
利用字节流+桥转换读入这个文本文件,然后按照行的顺序,以 UTF-8 的编码方式,写
到 test2.txt 文件中,例:
test2.txt
低头思故乡
举头望明月
疑是地上霜
窗前明月光

 String name="D:"+File.separator+"a"+File.separator+"test.txt";
		 String name1="D:"+File.separator+"a"+File.separator+"test2.txt";
		 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(name),"GBK"));
		 BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(name1))); 
        String[] s=new String[4];
        int i=0;
		
		String str=null;
		 while((str=bufferedReader.readLine())!=null) {
			
			 String str1=new String(str.getBytes(),"utf-8");
			 s[i]=str1;
			 i++;
			 System.out.println(str1);
		 }
		 bufferedReader.close();
	for(int j=3;j>-1;j--) {
	bufferedWriter.write(s[j]);
	bufferedWriter.newLine();
	}
	bufferedWriter.close();
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值