极速网站
申请会员 文章投稿 ACCP教程网公告:
搜索: 您的位置主页>图文教程>java资源>

8.3.4 BufferedReader与BufferedWriter类

2008-04-20 09:48:08 来源: 作者: 收藏本页 点击:
BufferedReader与BufferedWriter类别各拥有8192个字元的缓冲区,当读入或写出字元资料时,会先尽量从缓冲区读取。例如BufferedReader在读取文字档案时,会先将字元资料读入缓冲区,而之后若使用read()方法时,会先从缓冲区中进行读取,如果缓冲区资料不足,才会再从档案中读取,藉由缓冲区,可以减少对磁碟的I/O动作,藉以提高程式的效率。

而使用BufferedWriter时,写出的资料并不会先输出至目的地,而是先储存至缓冲区中,如果缓冲区中的资料满了,才会一次对目的地进行写出,例如一个目标档案,藉由缓冲区,可以减少对磁碟的I/O动作,藉以提高程式的效率。

其实之前就常使用BufferedReader,您从标准输入串流System.in中直接读取使用者输入时,每当使用者输入一个字元,则 System.in就读取一个字元,之前为了要能一次读取一行使用者的输入,使用了BufferedReader来对使用者输入的字元进行缓冲, readLine()方法会在读取到使用者的换行字元时,再一次将整行字串传入。

System.in是个位元串流,为了转换为字元串流,您使用InputStreamReader为其进行字元转换,然后再使用BufferedReader为其增加缓冲功能,例如:
BufferedReader bufReader =
     new BufferedReader(new InputStreamReader(System.in));

下次这个程式示范了BufferedReader与BufferedWriter的使用,您可以在文字模式下输入字元,程式会将您输入的文字储存至指定的档案中,如果要结束程式,输入quit字串即可:

  • BufferedReaderWriterDemo.java
package onlyfun.caterpillar;

import java.io.*;

public class BufferedReaderWriterDemo {
public static void main(String[] args) {
try {
BufferedReader bufReader =
new BufferedReader(
new InputStreamReader(System.in));
BufferedWriter bufWriter =
new BufferedWriter(new FileWriter(args[0]));

String keyin = null;
while(!(keyin =
bufReader.readLine()).equals("quit")) {
bufWriter.write(keyin);
bufWriter.newLine();
}

bufReader.close();
bufWriter.close();
}
catch(ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
 



标签:
评论总数:0 [ 发布评论 ] 网友评论
关于我们 - 版权声明 - RSS订阅 - 网站地图 - 网站帮助 成都水货手机网