BufferedWriter 和 BufferedReader 的基本用法

BufferedWriter 和 BufferedReader 的基本用法http://blog.csdn.net/liuhenghui5201/article/details/8279557“>BufferedWriter和BufferedReader的基本用法,附演示程序。以及一个复制文本文件的程序BufferedWriter和BufferedReader为带有默认缓冲的字符输出输入…

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

http://blog.csdn.net/liuhenghui5201/article/details/8279557“>BufferedWriter 和 BufferedReader 的基本用法,附演示程序。以及一个复制文本文件的程序

BufferedWriter 和 BufferedReader 为带有默认缓冲的字符输出输入流,因为有缓冲区所以很效率比没有缓冲区的很高。

一、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();//关闭此流,再关闭前会先刷新他。

  1. package Buffered;  
  2.   
  3. import java.io.BufferedWriter;  
  4. import java.io.FileWriter;  
  5. import java.io.IOException;  
  6.   
  7. public class BufferedWriterDemo {  
  8.     public static void main(String[] args) throws IOException {  
  9.         FileWriter fw = new FileWriter(“Buffered.txt”);  
  10. //      fw.write(“ok168”);  
  11. //      fw.close();  
  12.         /** 
  13.          * 为了提高写入的效率,使用了字符流的缓冲区。 
  14.          * 创建了一个字符写入流的缓冲区对象,并和指定要被缓冲的流对象相关联。 
  15.          */  
  16.         BufferedWriter bufw = new BufferedWriter(fw);  
  17.           
  18.         //使用缓冲区中的方法将数据写入到缓冲区中。  
  19.         bufw.write(”hello world !”);  
  20.         bufw.newLine();  
  21.         bufw.newLine();  
  22.         bufw.write(”!hello world !”);  
  23.         bufw.write(”!hello world !”);  
  24.         //使用缓冲区中的方法,将数据刷新到目的地文件中去。  
  25.         bufw.flush();  
  26.         //关闭缓冲区,同时关闭了fw流对象  
  27.         bufw.close();     
  28.     }  
  29. }  
package Buffered;

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("ok168");
//      fw.close();
        /**
         * 为了提高写入的效率,使用了字符流的缓冲区。
         * 创建了一个字符写入流的缓冲区对象,并和指定要被缓冲的流对象相关联。
         */
        BufferedWriter bufw = new BufferedWriter(fw);

        //使用缓冲区中的方法将数据写入到缓冲区中。
        bufw.write("hello world !");
        bufw.newLine();
        bufw.newLine();
        bufw.write("!hello world !");
        bufw.write("!hello world !");
        //使用缓冲区中的方法,将数据刷新到目的地文件中去。
        bufw.flush();
        //关闭缓冲区,同时关闭了fw流对象
        bufw.close();   
    }
}

二、BufferedReader类。

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

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

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

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

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

  1. package Buffered;  
  2.   
  3. import java.io.BufferedWriter;  
  4. import java.io.FileWriter;  
  5. import java.io.IOException;  
  6.   
  7. public class BufferedWriterDemo {  
  8.     public static void main(String[] args) throws IOException {  
  9.         FileWriter fw = new FileWriter(“Buffered.txt”);  
  10. //      fw.write(“ok168”);  
  11. //      fw.close();  
  12.         /** 
  13.          * 为了提高写入的效率,使用了字符流的缓冲区。 
  14.          * 创建了一个字符写入流的缓冲区对象,并和指定要被缓冲的流对象相关联。 
  15.          */  
  16.         BufferedWriter bufw = new BufferedWriter(fw);  
  17.           
  18.         //使用缓冲区中的方法将数据写入到缓冲区中。  
  19.         bufw.write(”hello world !”);  
  20.         bufw.newLine();  
  21.         bufw.newLine();  
  22.         bufw.write(”!hello world !”);  
  23.         bufw.write(”!hello world !”);  
  24.         //使用缓冲区中的方法,将数据刷新到目的地文件中去。  
  25.         bufw.flush();  
  26.         //关闭缓冲区,同时关闭了fw流对象  
  27.         bufw.close();     
  28.     }  
  29. }  
package Buffered;

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("ok168");
//      fw.close();
        /**
         * 为了提高写入的效率,使用了字符流的缓冲区。
         * 创建了一个字符写入流的缓冲区对象,并和指定要被缓冲的流对象相关联。
         */
        BufferedWriter bufw = new BufferedWriter(fw);

        //使用缓冲区中的方法将数据写入到缓冲区中。
        bufw.write("hello world !");
        bufw.newLine();
        bufw.newLine();
        bufw.write("!hello world !");
        bufw.write("!hello world !");
        //使用缓冲区中的方法,将数据刷新到目的地文件中去。
        bufw.flush();
        //关闭缓冲区,同时关闭了fw流对象
        bufw.close();   
    }
}

自定义的一个myBufferedReader类。

  1. package Buffered;  
  2.   
  3. import java.io.FileReader;  
  4. import java.io.IOException;  
  5.   
  6. public class MyBufferedReader {  
  7.       
  8.     private FileReader fr;  
  9.     private char []buf = new char[1024];  
  10.     private int count = 0;  
  11.     private int pos = 0;  
  12.     public MyBufferedReader(FileReader f){  
  13.         this.fr = f;          
  14.     }  
  15.     public int myRead() throws IOException{  
  16.         if(count == 0){  
  17.             count = fr.read(buf);  
  18.             pos = 0;  
  19.         }  
  20.         if(count<0)  
  21.             return –1;  
  22.         int ch = buf[pos++];  
  23.         count–;  
  24.         return ch;   
  25.     }  
  26.       
  27.     public String myReadLine() throws IOException{  
  28.         StringBuilder sb = new StringBuilder();  
  29.         int ch = 0;  
  30.         while ((ch = myRead()) != –1) {  
  31.             if (ch == ‘\r’)  
  32.                 continue;  
  33.             if (ch == ‘\n’)  
  34.                 return sb.toString();  
  35.             sb.append((char) ch);  
  36.             if(count == 0)  
  37.                 return sb.toString();             
  38.         }  
  39.         return null;  
  40.     }  
  41.     public void myClose() throws IOException {  
  42.         fr.close();  
  43.     }  
  44. }  
package Buffered;

import java.io.FileReader;
import java.io.IOException;

public class MyBufferedReader {

    private FileReader fr;
    private char []buf = new char[1024];
    private int count = 0;
    private int pos = 0;
    public MyBufferedReader(FileReader f){
        this.fr = f;        
    }
    public int myRead() throws IOException{
        if(count == 0){
            count = fr.read(buf);
            pos = 0;
        }
        if(count<0)
            return -1;
        int ch = buf[pos++];
        count--;
        return ch; 
    }

    public String myReadLine() throws IOException{
        StringBuilder sb = new StringBuilder();
        int ch = 0;
        while ((ch = myRead()) != -1) {
            if (ch == '\r')
                continue;
            if (ch == '\n')
                return sb.toString();
            sb.append((char) ch);
            if(count == 0)
                return sb.toString();           
        }
        return null;
    }
    public void myClose() throws IOException {
        fr.close();
    }
}

使用bufferedReader 和bufferWriter方法写的一个复制文本的小程序。

  1. package IOtest;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.BufferedWriter;  
  5. import java.io.FileReader;  
  6. import java.io.FileWriter;  
  7. import java.io.IOException;  
  8.   
  9. public class TextCopyByBuf {  
  10.   
  11.     /** 
  12.      * 首先创建读取字符数据流对象关联所要复制的文件。 
  13.      * 创建缓冲区对象关联流对象。 
  14.      * 从缓冲区中将字符创建并写入到要目的文件中。 
  15.      * @throws IOException  
  16.      */  
  17.     public static void main(String[] args) throws IOException {  
  18.         FileReader fr = new FileReader(“C:\\demo.txt”);  
  19.         FileWriter fw = new FileWriter(“D:\\love.txt”);  
  20.         BufferedReader bufr = new BufferedReader(fr);  
  21.         BufferedWriter bufw = new BufferedWriter(fw);  
  22.         //一行一行的寫。  
  23.         String line = null;  
  24.         while((line = bufr.readLine()) != null){  
  25.             bufw.write(line);  
  26.             bufw.newLine();  
  27.             bufw.flush();  
  28.         }  
  29.     /*  一個字節一個字節的寫。 
  30.         int ch = 0; 
  31.         while((ch = bufr.read())!=-1){
     
  32.             bufw.write(ch); 
  33.         }*/  
  34.         bufr.close();  
  35.         bufw.close();  
  36.     }  
  37. }  
package IOtest;

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

public class TextCopyByBuf {

    /**
     * 首先创建读取字符数据流对象关联所要复制的文件。
     * 创建缓冲区对象关联流对象。
     * 从缓冲区中将字符创建并写入到要目的文件中。
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("C:\\demo.txt");
        FileWriter fw = new FileWriter("D:\\love.txt");
        BufferedReader bufr = new BufferedReader(fr);
        BufferedWriter bufw = new BufferedWriter(fw);
        //一行一行的寫。
        String line = null;
        while((line = bufr.readLine()) != null){
            bufw.write(line);
            bufw.newLine();
            bufw.flush();
        }
    /*  一個字節一個字節的寫。
        int ch = 0;
        while((ch = bufr.read())!=-1){
            bufw.write(ch);
        }*/
        bufr.close();
        bufw.close();
    }
}

                </div>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139841.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Anaconda和Pycharm安装和配置教程[通俗易懂]

    Anaconda和Pycharm安装和配置教程[通俗易懂]1、下载Anaconda2(最好选Python2.7的,兼容性好点)在官网下载:https://www.continuum.io/downloads新路径https://www.anaconda.com/distribution/2、安装Pycharm(顺便激活成功教程,不需要激活成功教程工具)默认下一步,安装好就OK了。手动配置Pycharm所用解释器3、打开“文件”—“设置”,它会自动检测…

  • Visifire WPF 图表控件 激活成功教程「建议收藏」

    Visifire WPF 图表控件 激活成功教程「建议收藏」可能用WPF生成过图表的开发人员都知道,WPF虽然本身的绘图能力强大,但如果每种图表都自己去实现一次的话可能工作量就大了,尤其是在开发时间比较紧的情况下。这时候有必要借助一种专业的图表工具。Visifire是专为WPF、SliverLight、WP开发人员制定的一套图表控件,实现了一系列的专业图表(如:柱图、点图、雷达、饼图、K线图、以及其组合图等)。它在4….

  • python的lambda表达式详细讲解

    python的lambda表达式详细讲解前言:Lambda表达式是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象,是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包。缺点:只有一个运算式,不适用于复杂的计算。不够直观,难于理解,增加了维护成本python的lambda可以和java中的stream流一样,可以将lambda函数作为参数传递给其他函数比如说结合map、filter、sorted、reduce等一些Python内置函数使用接下来我们用代码来演示一下lambda(1)简单用法

    2022年10月17日
  • c++酒店管理系统课程设计_基于java的酒店管理系统源码

    c++酒店管理系统课程设计_基于java的酒店管理系统源码朋友们好呀,我是马保国。呸。我是一名大一刚过完一个学期的学生。————————————————————————在我忙碌的努力的在RushB并且备战期末考试的时候我想到了我还得学习!!!但是,临近期末课又少所以,我想到了我一直想要去做的,一个关于酒店的一些小东西,他能够做到酒店的一些鸡操(基本操作),像酒店的入住,退房,还有酒店员工的系统这些我认为比较牛(我认为比较厉害,别抬杠)的一个操作,所以在接近期末的时候疯狂肝,终于在考完试回到家的第一天写完了(前后20天左右了,浪费生命的臭玩意,啊。。。.

  • C# 发送邮件email

    C# 发送邮件email

  • QQ空间钓鱼源码_QQ空间视频提取值源码

    QQ空间钓鱼源码_QQ空间视频提取值源码IgotthiswebsitefrommypalwhosharedwithmeconcerningthiswebpageandatthemomentthistimeIamvisitingthiswebsiteandreadingveryinformativearticlesorreviewshere.回复thejjreport.com…

发表回复

您的电子邮箱地址不会被公开。

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