Java中的BufferedReader与BufferedWriter简介与使用

Java中的BufferedReader与BufferedWriter简介与使用BufferedReader和BufferedWriter是带有默认缓冲区的字符输入输出流,其效率相较于没有缓冲区要高:   1.java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。…

大家好,又见面了,我是你们的朋友全栈君。

BufferedReader和BufferedWriter是带有默认缓冲区的字符输入输出流,其效率相较于没有缓冲区要高:

      1.java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

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

    3. System.in是一个位流,为了转换为字符流,可使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能。

一 BufferedReader类

构造方法:BufferedReader br = new BufferReader(Reader in);

主要方法:int read();//读取单个字符。

            int read(char[] cbuf,int off,int len);//将字符读入到数组的某一部分。返回读取的字符数。达到尾部 ,返回-1。

                String readLine(); //读取一个文本行。

                void close(); //关闭该流。并释放与该流相关的所有资源。

使用示例如下:

FileInputStream inputstream = new FileInputStream(System.in); 
StringBuffer buffer = new StringBuffer(); 
String line; // 用来保存每行读取的内容 
BufferedReader bufferreader = new BufferedReader(new InputStreamReader(inputstream)); 
line = bufferreader.readLine(); // 读取第一行 
while (line != null) { // 如果 line 为空说明读完了 
	buffer.append(line); // 将读到的内容添加到 buffer 中 
	buffer.append("\n"); // 添加换行符 
	line = bufferreader.readLine(); // 读取下一行 
} 
inputstream.close(); //将读到 buffer 中的内容写出来 
System.out.print(buffer) ;

二 BufferedWriter类

构造方法:bufferedWriter bf = new bufferedWriter(Writer out );

主要方法:void write(char ch);//写入单个字符。

                void write(char []cbuf,int off,int len)//写入字符数据的某一部分。

                void write(String s,int off,int len)//写入字符串的某一部分。

                void newLine()//写入一个行分隔符。

                void flush();//刷新该流中的缓冲。将缓冲数据写到目的文件中去。

                void close();//关闭此流,再关闭前会先刷新他。

使用示例如下:

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

public class BufferedWriterDemo { 
      public static void main(String[] args) throws IOException {
            FileWriter fw = new FileWriter("Buffered.txt"); 
            fw.write("Hello Hello");  
            fw.close();  
            BufferedWriter bfw= new BufferedWriter(fw); //使用字符流的缓冲区提高效率 
            bfw.write("hello hello fast"); //使用缓冲区的方法将数据写入到缓冲区中 
            bfw.newLine();  
            bfw.write("hello hello world");  
            bfw.flush(); //使用缓冲区中的方法,将数据刷新到目的地文件中去
            bfw.close();//关闭缓冲区,同时关闭fw流对象
      }  
}  

综合应用示例:

以下程序主要完成从一个文档复制内容到另一个文档。

import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.FileReader;  
import java.io.FileWriter;  
import java.io.IOException;  
  
public class DocTransfer {  
     public static void main(String[] args) throws IOException {  
          FileReader fr = new FileReader("D:\\doc1.txt");  
          FileWriter fw = new FileWriter("D:\\doc2.txt");  
          BufferedReader bfr = new BufferedReader(fr);  
          BufferedWriter bfw = new BufferedWriter(fw);    
          String line = null;  
          while((line = bfr.readLine()) != null){  
                bfw.write(line);//一行一行字的写  
                bfw.newLine();  
                bfw.flush();  
          } 
          /*int ch = 0; 
          while((ch = bfr.read())!=-1){ 
                bfw.write(ch); 
          }//一个字一个字的写*/  
          bfr.close();  
          bfw.close();  
    }  
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136484.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Alex 的 Hadoop 菜鸟教程: 第15课 Impala 安装使用教程

    Alex 的 Hadoop 菜鸟教程: 第15课 Impala 安装使用教程本教程介绍Impala的安装,使用和JDBC调用。为什么用Impala?因为Hive太慢了!Impala也可以执行SQL,但是比Hive的速度快很多。为什么Impala可以比Hive快呢?因为Hive采用的是把你的sql转化成hadoop的MapReduce任务的代码,然后编译,打包成jar包,并分发到各个server上执行,这是一个相当慢的过程。而Impala根本就不用Hadoop的MapReduce机制,直接调用HDFS的API获取文件,在自己的内存中进行计算。

    2022年5月2日
    46
  • select2 使用教程(简)「建议收藏」

    select2 使用教程(简)「建议收藏」用了这么久的Select2插件,也该写篇文章总结总结。当初感觉Select2不是特别好用,但又找不到比它更好的下拉框插件。在我的印象里Select2有2个版本,最新版本有一些新的特性,并且更新了一下方法参数,比最初版本要好看一些,本文针对新版本。官网:http://select2.github.io/演示:请选择由于博客系统的原因,所以只能演示简单

    2022年6月25日
    30
  • H5文件读取_如何用电脑读取手机文件

    H5文件读取_如何用电脑读取手机文件H5文件读取:importtorch.utils.dataasdataimporttorchimporth5pyclassDatasetFromHdf5(data.Dataset):def__init__(self,file_path):super(DatasetFromHdf5,self).__init__()hf=h5py.File(file_path)self.data=hf.get(‘data’)

    2025年10月12日
    2
  • ESLint-的基本介绍[通俗易懂]

    ESLint-的基本介绍[通俗易懂]什么是eslintESLint是一个代码检查工具,用来检查你的代码是否符合指定的规范(例如:=的前后必须有一个空格)。规范行业推荐的规范;在创建项目时,我们使用的是JavaScriptStandardStyle代码风格的规则自定义的规范。你和你的团队可以自行约定一套规范使用ESLint的好处在于:多人协作时代码风格统一eslint是法官,Standard是法律vue-cli工具在创建项目时提供选项,我们前面在创建项目时选中了它,所以它在本项目中是直接生效

    2022年6月18日
    35
  • [050] 微信公众平台开发入门视频教程已发布

    [050] 微信公众平台开发入门视频教程已发布2014年4月26日晚8点,我在CSDN社区在线培训课堂讲解了微信公众平台开发入门的相关知识,受到广大网友的一致好评,在此非常感谢大家的支持!课程结束后,很多网友表示由于报名人数限制、临时有事等原因,未能参加,希望能够提供录制视频的观看地址。视频教程的主要内容包括: 1、移动APP发展趋势(NativeAPP、WebAPP、LightAPP) 2、微信公众平台基础知识(服务号/订阅号、公众账

    2022年6月5日
    38
  • 版权文字:Power by DedeCms 如何去除?[通俗易懂]

    版权文字:Power by DedeCms 如何去除?[通俗易懂]dedeCMS系统中的版权声明信息中含有“PowerbyDedeCms”字样,如何去除?dedeCMS近期的新版本至2013-6-7更新包以来,不管新版还是旧版更新补丁包,更新后网站页底都会出现powerbydedecms。*一、powerbydedecms什么意思?在我们上网的时候,会见到页面页底很多带powerbydedecms的网站,powerbydede…

    2022年7月13日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号