public void showInfos() {
try {
OutputStream outputStream = new FileOutputStream("C:\\abc.txt");
//MyPrintStream myPrintStream = new MyPrintStream(outputStream, text);
String infos = "\n显示信息";
System.out.println(infos);
outputStream.write(infos.getBytes(), 0, infos.getBytes().length);
//myPrintStream.append(infos);
outputStream.flush();
                        outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
在上面代码中执行数次后,在abc.txt文件中为什么只有“ 显示信息”这一行信息,不知道原因主要是对输入输出流不是很熟悉,怎样才能多次的将要输出的信息输出到abc.txt文件中。

解决方案 »

  1.   

    public FileOutputStream(File file,boolean append)throws Exception
    boolean append参数是true就可以
      

  2.   

    如果不覆盖,就是追加,则是是构造是时候加个true
    OutputStream outputStream = new FileOutputStream("C:\\abc.txt",true);
      

  3.   

    public FileOutputStream(String name,
                            boolean append)
                     throws FileNotFoundException创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。创建一个新 FileDescriptor 对象来表示此文件连接。 
    首先,如果有安全管理器,则用 name 作为参数调用 checkWrite 方法。 如果该文件存在,但它是一个目录,而不是一个常规文件;或者该文件不存在,但无法创建它;抑或因为其他某些原因而无法打开它,则抛出 FileNotFoundException。 
    参数:
    name - 与系统有关的文件名
    append - 如果为 true,则将字节写入文件末尾处,而不是写入文件开始处 看看API就知道了
     OutputStream outputStream = new FileOutputStream("C:\\abc.txt"); 这只会覆盖原有的内容
     OutputStream outputStream = new FileOutputStream("C:\\abc.txt",true); 试试这个
      

  4.   

    byte[] line = {'\r', '\n'};把这个东西 写到行尾。
      

  5.   


    你要在文件中输入换行符,就这样写
    outputStream.newLine()
      

  6.   

    FileOutputStream适宜于用来输出原始字节文件比如图形文件
    要输出文本文件宜用FileWriter虽然文本也可以看成是字节流,但需要多转换一次,比如换行就是写入"\r\n".getBytes()
    FileWriter可以直接write(String)为了不覆盖原文,可以用FileWriter(filename,true)来创建它