JavaIO——字符流

        
  字符输出流:Writer
     实现了Closeable,Flushable、Appendable 接口
     具体方法:
     Write类中的writer()直接输出字符串: out.write(msg) ;
     操作文件使用FileWriter子类: Writer out = new FileWriter(file) ; 
     特点:
     Writer类的结构与方法的使用与OutputStream非常相似,只是Writer类对于中文的支持很好并且提供了直接写入 String的方法而已。
    
  字符输入流:Reader 
     Reader依然也是一个抽象类。如果要进行文件读取,同样的,使用FileReader。       
     在Reader类中没有方法可以直接读取字符串类 型,这个时候只能通过字符数组进行读取操作;
     // 1.定义文件路径
     File file = new File(File.separator + "Users" + File.separator + "ma" + File.separator + "Desktop"  + File.separator + "hello.txt");   
     // 2.必须保证文件存在才能进行处理    
     if (file.exists()) {    
     Reader in = new FileReader(file) ;   
     char[] data = new char[1024] ;       
     int len = in.read(data) ;
     // 将数据读取到字符数组中   
     String result = new String(data, 0, len) ;     
     System.out.println("读取内容【"+result+"】"
     ) ;        
     in.close();     
     } 
    处理的是图片、音乐、文字都可以使用字节流,
    而只有处理中文的时候才会使用字符流 。
  转换流
     字节输出转为字符输出:OutputStreamWriter (输出比较方便)——继承 Writer
     字节输入转为字符输入:InputStreamReader(方便中文)——继承Reader
     具体操作:
        File file = new File(File.separator + "Users" + File.separator + "ma" + File.separator + "Desktop"    + File.separator + "hello.txt");   
        if (!file.getParentFile().exists()) {
        // 必须保证父目录存在          
        file.getParentFile().mkdirs() ; 
        // 创建多级父目录        }      
        OutputStream output = new FileOutputStream(file) ;    
        Writer out = new OutputStreamWriter(output) ;
        // 字节流转为字符流  
        String msg = "你好啊 " ;   
        out.write(msg) ;        
        out.close(); 
        }
         

JavaIO——字符流