本帖最后由 sAS112UUUYY111 于 2010-03-19 16:39:02 编辑

解决方案 »

  1.   

    FileOutputStream 是字节流
    BufferedWriter 是字符流在编程的时候建议使用字符流但愿我没说错  阿弥陀佛说个题外的 
    new BufferedWriter(outputStreamWriter); 这种嵌套模式是装饰模式
      

  2.   

    这个应该能解决你的问题
    Java的字符流和字节流 比较
      

  3.   


    这样包装有两个目的:
    1、为了使用更好的接口,FileOutputStream 类可能有些方法在该需求中并不好用,改BufferedWriter 可能更符合需求
    2、为了加快程序的读写速度、使用缓冲进行包装,这有好几种包装法,你可以测试一下每种性能差异其它的什么作用我暂时还没想到:)
      

  4.   

    我想重点在MS936吧,这个流应该是用这个编码方式来写文件的,然后再用BufferdWriter包装一下,加快写的速度。
      

  5.   

    FileOutputStream 是字节流,它一个字节一个字节的向外边送数据
    OutputStreamWrite是字符流,它一个字符一个字符的向外边送数据
    它们有什么区别么?
          因为计算机是洋鬼子发明的,它们的英文字符占一个字节,而我们的中文是一个字符,占俩字节。
         如果用stream,你读出来的英语再倒也罢了,读出来的中文可就是乱码或者一个个“????”。
         如果你用WRITER,就不会有乱码了,明白?BufferedWriter  Buffer是一个缓冲区,为什么要用BUFFER呢?
        如果你直接用stream或者writer,你的硬盘可能就是一个字符或者一个字节    读写硬盘一次,
    可是你用了Buffer,你的硬盘就是读了一堆数据之后,读写一下硬盘。这样对你硬盘有好处。打个比方说:你要喝水,你是一滴一滴的喝呢,还是一杯一杯的喝呢?stream,wirter就相当一滴,buffer就相当一个杯子。
      

  6.   

    TO 10楼:
    不是所有的文件都是用来记录字符的。
    如果你将一个Object保存到硬盘上,那么这个文件只能是一个字节文件。而不是字符文件。
    所以Stream的目的并不是你想到的那样。FileReader这个才是专门用来读字符文件的。
    之所以有时候不用FileReader而用FileInputStream和InputStreamReader来代替,是因为需要做编码转换。
    InputStreamReader有一个很重要的指定转换编码的功能。
      

  7.   

    lz要查一下API里面的构造方法,这在构造方法里面都有啊!
     
    BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
    //                                将原来的流变的带缓冲了
      

  8.   

    可以看看这里:Java的字符流和字节流问题


      

  9.   

    FileOutputStream 是字节流
    BufferedWriter 是字符流
    想下哪个效率更高?
    Buffered 是缓冲流。
    最优的办法就是三个合起来用。