为什么我的旧文件内容被覆盖?

时间:2013-09-28 16:16:19

标签: android

我正在使用以下代码将日志数据保存到文件中。 但是,每次拨打新电话时,旧内容都会消失.....

我无法弄清楚问题是什么......

public void writeToFile(String fileName, String textToWrite) {

        FileOutputStream fOut = null;
        try {

            File root = new File(Environment.getExternalStorageDirectory() , fileName);
            if (! root.exists()){
                root.createNewFile();
            }

            fOut = new FileOutputStream(root);
            OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
            myOutWriter.append(textToWrite);
            myOutWriter.flush();
            myOutWriter.close();   
        } 
        catch (Exception e) {
            new MailService().mailMessage(e.toString());
        }
        finally{

            if(fOut != null){
                try{
                    fOut.close();
                }
                catch(Exception ex){

                }
            }
        }

    }

1 个答案:

答案 0 :(得分:3)

您需要将第二个参数boolean true传递给FileOutputStream构造函数,该构造函数指示文件将以追加模式而不是写入模式打开。

FileOutputStream out=new FileOutputStream("myfile");

每次执行上述代码时,它都会以写入模式打开文件,以便新内容覆盖旧内容。但是,FileOutputStream构造函数接受第二个参数,该参数是boolean,指示是否以追加模式打开文件。

FileOutputStream out=new FileOutputStream("myfile",true);

以上代码将以附加模式打开文件,以便将新内容附加到旧内容的末尾。

要了解有关FileOutputStream构造函数的更多信息,请参阅this