Java核心API之缓冲字符流的使用介绍

2025-10-20 01:50:43

1、缓冲字符输出流PrintWriter

    PrintWriter具有自动行刷新的缓冲字符输出流,其内部提供了缓冲区,可以退提高写出效率,其具有丰富的构造方法。

常用方法有:

    PrintWriter(File file);

    PrintWriter(OutputStream out);

    PrintWriter(OutputStream out,boolean antuflush);

    PrintWriter(Writer writer);

    PrintWriter(Writer writer,boolean antuoflush);

    PrintWriter(String fileName);

    那么什么是自动行刷新呢?其实是指PrintWriter可以按行写字符串的意思。

示例代码片段如下:

    /*   

     * PrintWriter(File file);   

     * 该构造方法传入文件对象   

     *    

     * PrintWriter(OutputStream out);   

     * 该构造方法出入字节流   

     *     

     * PrintWriter(OutputStream out,boolean antuflush);   

     * 该构造方法第一个参数是字节流,第二个参数是自动行刷新标识    

     *    

     * PrintWriter(Writer writer);  

     * 该构造方法传入字符流 

     *    

     * PrintWriter(Writer writer,boolean antuoflush);    

     * 该构造方法第一参数传入字符流,第二个参数传入自动行刷新标识   

     *     

     * PrintWriter(String fileName);    

     * 该构造方法传入文件名称字符串    

     */ 

     @Test  

     public void testPW() throws Exception{      

        //PrintWriter(File file)       

        File file = new File("pw.txt");      

        PrintWriter pw = new PrintWriter(file);             

        //PrintWriter(OutputStream out,boolean antuflush)      

        FileOutputStream fos = new FileOutputStream(file);       

        PrintWriter pw2 = new PrintWriter(fos);      

        PrintWriter pw3 = new PrintWriter(fos,true);           

        //PrintWriter(Writer writer,boolean antuoflush)    

        OutputStreamWriter osw = new OutputStreamWriter(fos);   

        PrintWriter pw4 = new PrintWriter(osw);    

        PrintWriter pw5 = new PrintWriter(osw,true);  

          

        //PrintWriter(String fileName)

        PrintWriter pw6 = new PrintWriter("pw.txt");

   }

分析:众多构造方法中最常用的方式是PrintWriter(Writer writer,boolean antuoflush)第一个参数是字符流的父类,第二个参数就是自动行刷新标识了。

Java核心API之缓冲字符流的使用介绍

2、缓冲字符流print方法

    PrintWriter具有丰富的pint方法,而println方法输出字符串后会自动的flush,即清空缓冲区,将数据强制写出。

常用方法有:

    void print(int i);

    void print(char c);

    void print(boolean b);

    void print(char[] c);

    void print(double d);

    void print(float f);

    void print(long l);

    void print(String str);

分析:PrintWriter的print方法能够写出所有基本数据。

3、运用PrintWriter向文件中写出数据

示例代码如下:

   @Test

   public void testPWIO() throws Exception{       

        FileOutputStream fos = new FileOutputStream("pw.txt");

        OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");           PrintWriter pw = new PrintWriter(osw,true);

        pw.println("HelloWorld");       

        pw.close();   

   }

   

Java核心API之缓冲字符流的使用介绍

4、缓冲字符输入流BufferedReader

    BufferedReader是缓冲字符输入流,其内部维护一个缓冲区,可以提高读取效率。

构造方法如下:

    BufferedReader(Reader reader)

示例代码如下:

   /*     

    *构造方法 BufferedReader(Reader reader)     

    */      

    @Test    

    public void testBRContructor() throws Exception{        

        FileInputStream fis = new FileInputStream("pw.txt");

        InputStreamReader isr = new InputStreamReader(fis,"UTF-8");    

        //构造方法 

        BufferedReader(Reader reader)        

        BufferedReader br = new BufferedReader(isr);   

 }

Java核心API之缓冲字符流的使用介绍

5、使用BufferedReader的核心方法读取文件

    BufferedReader提供了一个便于读取一行字符串的方法:String readerLine()

该方法可以连续读取一行字符串,直到读取到换行符为止,返回的字符串不包含该换行符。

示例代码片段如下:

    /*     

      * String readLine()    

      * 该方法可以连续读取一行字符串,直到读取到换行符为止,返回的字符串不包含该换行符。     

      */    

     @Test    

     public void testBRReadLine() throws Exception{       

         FileInputStream fis = new FileInputStream("pw.txt");

         InputStreamReader isr = new InputStreamReader(fis,"UTF-8");                  BufferedReader br = new BufferedReader(isr);        

         String end = null;       

         while((end=br.readLine())!=null){            

             System.out.println(end);        

         }    

     }   

Java核心API之缓冲字符流的使用介绍

6、使用缓冲字符流复制文件Demo

示例代码如下:

    /*   

     * 使用缓冲字符流赋值文件   

     */   

     @Test   

     public void copy(){       

         //读取文件       

         FileInputStream fis = null;       

         InputStreamReader isr = null;

         BufferedReader br = null;

         //复制文件       

         FileOutputStream fos = null;       

         OutputStreamWriter osw = null;       

         PrintWriter pw = null;               

         try {           

             fis = new FileInputStream("speech.txt");           

             isr = new InputStreamReader(fis,"UTF-8");           

             br = new BufferedReader(isr);         

            

             fos = new FileOutputStream("speech_copy.txt");           

             osw = new OutputStreamWriter(fos,"UTF-8");           

             pw = new PrintWriter(osw);        

              

             String end = null;

             while((end = br.readLine())!=null){              

                 pw.println(end);           

             }                   

         } catch (FileNotFoundException e) {           

             System.out.println("文件没有找到");       

         } catch (UnsupportedEncodingException e){           

             System.out.println("不支持指定字符集");      

         } catch (IOException e){           

             System.out.println("读写文件出现问题");      

         } finally {           

             if(br != null){               

                 try {                   

                     br.close();               

                 } catch (IOException e) {                   

                     e.printStackTrace();               

                 }           

              }           

              if(pw != null){               

                 pw.close();           

              }       

        }

注意:大家可以把小编的代码拷贝下来进行测试,测试前需要创建要拷贝的文件,如示例中speech.txt

Java核心API之缓冲字符流的使用介绍

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢