java基础十---IO字符流Writer

一、Writer:用于写入字符流的抽象类。 子类必须实现的唯一方法是write(char [],int,int),flush()和close()。 然而,大多数子类将覆盖这里定义的一些方法,以便提供更高的效率,附加的功能或两者。 
常用函数:    
    1.append(CharSequence csq) 将指定的字符序列附加到此作者。    
    2.write(String str) 写一个字符串    
    3.write(char[] cbuf) 写入一个字符数组。    
    4.flush() 刷新流。     
    5.close() 关闭流,先刷新。   

已知子类:  

    1.BufferedWriter :将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。       
        构造函数:           
        1.public BufferedWriter(Writer out)       
        常用函数:   
        1.write(char[] cbuf, int off, int len) 写入字符数组的一部分。     
        2.close() 关闭流,先刷新。     
        3.flush() 刷新流。 
    
    2.OutputStreamWriter :可以实现字节流转字符流:它读取字节,并使用指定的charset将其解码为字符。   
        构造函数:
        1.OutputStreamWriter(OutputStream out, Charset cs)   
        常用函数:
        1.close() 关闭流,先刷新。 
        2.flush() 刷新流。
        3.write(char[] cbuf, int off, int len) 写入字符数组的一部分。 
        
    已知子类       
        3. FileWriter 是用于写入字符流
            构造函数:
            1.FileWriter(File file) 
            常用函数:
            1.close() 关闭流,先刷新。 
            2.flush() 刷新流。
            3.write(char[] cbuf, int off, int len) 写入字符数组的一部分。 
            
    4.CharArrayWriter :该类实现了可以用作Writer的字符缓冲区。 当数据写入流时,缓冲区会自动增长
        构造函数:
        1.CharArrayWriter(int initialSize) 
        常用函数:
        1.close() 关闭流,先刷新。 
        2.flush() 刷新流。
        3.write(char[] cbuf, int off, int len) 写入字符数组的一部分。        
        
    5.FilterWriter:用于编写过滤后的字符流的抽象类。 抽象类FilterWriter本身提供了将所有请求传递给包含流的默认方法    
        构造函数:
        1.CharArrayWriter(int initialSize) 
        常用函数:
        1.close() 关闭流,先刷新。 
        2.flush() 刷新流。
        3.write(char[] cbuf, int off, int len) 写入字符数组的一部分。  
        
    6.PipedWriter:管道流
        构造函数:
        1.PipedWriter(PipedReader snk) 
        常用函数:
        1.close() 关闭流,先刷新。 
        2.flush() 刷新流。
        3.write(char[] cbuf, int off, int len) 写入字符数组的一部分。  
        4.connect(PipedReader snk) 将此管道写入器连接到接收器。 

    7.StringWriter:字符串流
        构造函数
        1.StringWriter(int initialSize) 
        常用函数:
        1.close() 关闭流,先刷新。 
        2.flush() 刷新流。
        3.write(char[] cbuf, int off, int len) 写入字符数组的一部分。  
        4.getBuffer() 返回字符串缓冲区本身。     
        
    8.PrintWriter:打印流,将对象的格式表示打印到文本输出流
        构造函数:
        1.PrintWriter(OutputStream out) 
        2.PrintWriter(File file) 
        3.PrintWriter(Writer out) 
        常用函数:
        1.close() 关闭流,先刷新。 
        2.flush() 刷新流。
        3.write(char[] cbuf, int off, int len) 写入字符数组的一部分。  
        4.print(String s) 打印字符串。  

    

常用的实例代码

  //FileWriter 文件最简单的用法
   public static void  fileWriterTest(String data,String path){
       FileWriter fileWriter=null;
       try {
           File file=new File(path);
           if(!file.exists()){
               file.createNewFile();
           }
           //给一个File对象构造一个FileWriter对象。 如果第二个参数是true ,则字节将写入文件的末尾而不是开头。
           fileWriter=new FileWriter(pathTest,true);
           fileWriter.write(data);
           //刷新流,将数据写入文本
           fileWriter.flush();
       } catch (IOException e) {
           e.printStackTrace();
       }finally {
           if(fileWriter!=null){
               try {
                   //close方法内部也会调用一次flush函数刷新流
                   fileWriter.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
       }
   }
    //FileWriter增加缓冲技术的用法,使用BufferedWriter包装类
    public static void  fileWriterTest2(String data, String path) throws IOException{
            File file = new File(path);
            if (!file.exists()) {
                file.createNewFile();
            }
            BufferedWriter bufferedWriter=null;
            try {
                bufferedWriter=new BufferedWriter(new FileWriter(pathTest,true));
                bufferedWriter.write(data);
                bufferedWriter.flush();
            }finally {
                if(bufferedWriter!=null){
                    bufferedWriter.close();
                }
            }
    }

    //字节流转字符流
    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    public static void OutputStreamWriterTest(String data, OutputStream out){
        //java7的新特性,跳出try代码块将自动执行close方法
        try( OutputStreamWriter outputStreamWriter=new OutputStreamWriter(out);){
            outputStreamWriter.write(data);
        } catch (IOException e) {
        }
    }


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值