字节流和字符流的区别

一、缓冲区使用
    字节流不会用到缓冲区(内存),是文件自己直接操做的,而字符流在操做时使用了缓冲区,经过缓冲区再操做文件,因此使用字符流的时候要加上flush()方法,不然内容不会被写出去,而是还在内存里面。以下所示:
  1. package org.lxh.demo12.chariodemo;    
  2. import java.io.File;    
  3. import java.io.FileWriter;    
  4. import java.io.Writer;    
  5. public class WriterDemo04 {    
  6.     public static void main(String[] args) throws Exception { // 异常抛出不处理    
  7.         // 第1步:使用File类找到一个文件    
  8.         File f = new File("d:" + File.separator + "test.txt");// 声明File    
  9. 对象    
  10.         // 第2步:经过子类实例化父类对象    
  11.         Writer out = null;                   
  12. // 准备好一个输出的对象    
  13.         out = new FileWriter(f);             
  14. // 经过对象多态性进行实例化    
  15.         // 第3步:进行写操做    
  16.         String str = "Hello World!!!";      
  17. // 准备一个字符串    
  18.         out.write(str);                    
  19. // 将内容输出    
  20.         out.flush();                       
  21. // 强制性清空缓冲区中的内容    
  22.         // 第4步:关闭输出流    
  23.         // out.close();                
  24. // 此时没有关闭    
  25.     }    
  26. }   

字节流则不用加上清空缓存操做:
  1. public static void main(String[] args) throws Exception {   // 异常抛出,  不处理    
  2. // 第1步:使用File类找到一个文件    
  3.      File f = new File("d:" + File.separator + "test.txt"); // 声明File  对象    
  4. // 第2步:经过子类实例化父类对象    
  5.      OutputStream out = null;            
  6. // 准备好一个输出的对象    
  7.      out = new FileOutputStream(f);      
  8. // 经过对象多态性进行实例化    
  9. // 第3步:进行写操做    
  10.      String str = "Hello World!!!";      
  11. // 准备一个字符串    
  12.      byte b[] = str.getBytes();          
  13. // 字符串转byte数组    
  14.      out.write(b);                      
  15. // 将内容输出    
  16.  // 第4步:关闭输出流    
  17.     // out.close();                  
  18. // 此时没有关闭    
  19.         }    
  20.     }  
二、字节流使用更普遍

        若是是音频文件、图片、歌曲,就用字节流好点,若是是关系到中文(文本)的,用字符流好点
相关文章
相关标签/搜索