Michel
Michel

Reputation: 23615

Why does my old file contents get overwritten?

i'm using the below code to save log data to a file. However, every time a new call is made, the old content is gone.....

i can't figure out what the issue is however....

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){

                }
            }
        }

    }

Upvotes: 0

Views: 97

Answers (1)

Sandeep Panda
Sandeep Panda

Reputation: 723

You need to pass second parameter boolean true to FileOutputStream constructor which indicates the file will be opened in append mode rather than write mode.

FileOutputStream out=new FileOutputStream("myfile");

Everytime you execute the above code it will open the file in write mode so that the new content will overwrite the old content. However, the FileOutputStream constructor accepts a second argument which is a boolean indicating whether to open the file in append mode.

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

The above code will open the file in append mode so that the new content will be appended to the end of old content.

To know more about FileOutputStream constructors see this.

Upvotes: 3

Related Questions