import java.io.*;
class aa 
{
public static void main(String[] args)throws FileNotFoundException ,IOException
{
String filename="d:\\aa.log";
FileOutputStream fos = new FileOutputStream(filename, true);
PrintWriter writer = new PrintWriter(fos);
        writer.print("aaa");      //
fos.write(55);  //
        writer.print("bb");       //
writer.close();
}
}
输出:7aaabb  奇怪了,怎么不是按顺序的,谁能解释一下,谢谢!

解决方案 »

  1.   

    你这样用的确很奇怪如果非得这样用,write后就加writer.flush(); 内部有缓冲,并不是马上写文件
      

  2.   

    我支持 kingfish,你应该关闭连接,然后再写。或者说你一次全写进去。而不应该分两个部分写
      

  3.   

    我并不是说要一次写入,而是PrintWriter和fos混着用会有这个问题。
    PrintWriter内部有缓冲,写了1行或者flush或者close时才会将相应内容写入文件。
    而FileOutputStream没有,所以会产生顺序问题。