fr=new FileWriter("e:/test/test.txt");
     for(int i=0;i<200;i++){
     fr.write(i);
     }
     fr.close();
当我不加fr.close()时test文件里什么都没有,加了close()这个方法后,才有内容。而用FileOutputStream()时,不调用close()方法却可以

解决方案 »

  1.   

    缓冲的问题 高级流要colse 或者  void flush() 
              刷新该流的缓冲。  才会真正的写到文件中
      

  2.   


    +1 flush()是把数据从冲缓存中写进文本。
    close()其实在这个方法执行之前先调用了flush()方法刷出数据
      

  3.   

    FileOutputStream 是在缓存中建立了一个独立的空间fr.write(i);只是把i直接写进缓存,可是缓存给它分配的空间只有一个字节,i正好是一个字节,缓存发现这个分配空间满了,就会自动的把它刷进文本。write(byte[] b)时你有可能会发现新的文本后面的字可能会丢失。
      

  4.   

    文件流必须close(),而且你最好用finally,保证文件流在程序报错以后也会关闭。
      

  5.   

    FileWriter fr = null;
    try {
    fr = new FileWriter("e:/test/test.txt");
    for (int i = 0; i < 200; i++) {
    fr.write(i);
    }
    } catch (IOException e) {
    e.printStackTrace();
    } finally { try {
    fr.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }我试了下,写入的内容如下: 

     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????????¤??§¨???????°±?????·????????????????
    怎么回事?