title: How to append data to a file in android
body: <p>I am creating an android application that consists of registration form.If one will click the sign in  button then a log file will be created with username and log in time.I created file successfully.But coming to append data i am getting an EROFS exception.Please help me how to solve this.</p>
  
  <p>This is my home activity:</p>
  
  <pre><code>package com.techblogon.loginexample;
  
  import android.app.Activity;
  import android.app.Dialog;
  import android.content.Context;
  import android.content.Intent;
  import android.content.Loader;
  import android.os.Bundle;
  import android.view.View;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.Toast;
  
  import java.io.BufferedReader;
  import java.io.BufferedWriter;
  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.FileWriter;
  import java.io.PrintStream;
  import java.text.SimpleDateFormat;
  import java.util.Date;
  
  public class HomeActivity extends Activity 
  {
      Button btnSignIn,btnSignUp;
      LoginDataBaseAdapter loginDataBaseAdapter;
      String userName,password,filename;
      FileOutputStream fileoutputstream;
      File user_data;
      StringBuffer string_buffer;
      @Override
      protected void onCreate(Bundle savedInstanceState) 
      {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
  
          SimpleDateFormat simpledate =new SimpleDateFormat("dd-mm-yyyy--hh:mm:ss");
                          filename = simpledate.format(new Date());
  
  
           // create a instance of SQLite Database
           loginDataBaseAdapter=new LoginDataBaseAdapter(this);
           loginDataBaseAdapter=loginDataBaseAdapter.open();
  
           // Get The Refference Of Buttons
           btnSignIn=(Button)findViewById(R.id.buttonSignIN);
           btnSignUp=(Button)findViewById(R.id.buttonSignUP);
  
          // Set OnClick Listener on SignUp button 
          btnSignUp.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {
              // TODO Auto-generated method stub
  
              /// Create Intent for SignUpActivity  and Start The Activity
              Intent intentSignUP=new Intent(getApplicationContext(),SignUPActivity.class);
              startActivity(intentSignUP);
              }
          });
      }
      // Methos to handleClick Event of Sign In Button
      public void signIn(View V)
         {
              final Dialog dialog = new Dialog(HomeActivity.this);
              dialog.setContentView(R.layout.login);
              dialog.setTitle("Login");
  
              // get the Refferences of views
              final  EditText editTextUserName=(EditText)dialog.findViewById(R.id.editTextUserNameToLogin);
              final  EditText editTextPassword=(EditText)dialog.findViewById(R.id.editTextPasswordToLogin);
  
              Button btnSignIn=(Button)dialog.findViewById(R.id.buttonSignIn);
  
              // Set On ClickListener
              btnSignIn.setOnClickListener(new View.OnClickListener() {
  
                  public void onClick(View v) {
                      // get The User name and Password
                      userName=editTextUserName.getText().toString();
                      password=editTextPassword.getText().toString();
  
                      // fetch the Password form database for respective user name
                      String storedPassword=loginDataBaseAdapter.getSinlgeEntry(userName);
  
                      // check if the Stored password matches with  Password entered by user
                      if(password.equals(storedPassword))
                      {
                          Toast.makeText(HomeActivity.this, "Congrats: Login Successfull", Toast.LENGTH_LONG).show();
                          dialog.dismiss();
                          File UserDirectory = new File("/sdcard/Panelusers/"+userName);
                          UserDirectory.mkdirs();
                          user_data = new File("/sdcard/Panelusers/" + userName + "/log.txt");
                          try {
                              fileoutputstream = new FileOutputStream(user_data);
                              fileoutputstream = openFileOutput(userName, Context.MODE_PRIVATE);
                              PrintStream print_data = new PrintStream(fileoutputstream);
                              print_data.print(userName + "-------" + filename);
                              fileoutputstream.close();
                          }
  
                          catch (Exception e)
                          {
                              Toast.makeText(HomeActivity.this,e.getMessage(),Toast.LENGTH_LONG).show();
                          }
                          if(!user_data.exists()) {
                              user_data = new File("/sdcard/Panelusers/" + userName + "/log.txt");
                          }
                          try
                          {
  
                              FileWriter file_writer = new FileWriter(user_data.getName(),true);
  
                              BufferedWriter buffered_writer = new BufferedWriter(file_writer);
                              buffered_writer.newLine();
                              buffered_writer.write("/n" +userName + "--------" + filename);
                              buffered_writer.close();
  
                          }
                          catch(Exception e)
                          {
                              Toast.makeText(HomeActivity.this,e.getMessage(),Toast.LENGTH_LONG).show();
                          }
  
                      }
  
  
                      else
                      {
                          Toast.makeText(HomeActivity.this, "User Name or Password does not match", Toast.LENGTH_LONG).show();
                      }
                  }
              });
  
              dialog.show();
      }
  
      @Override
      protected void onDestroy() {
          super.onDestroy();
          // Close The Database
          loginDataBaseAdapter.close();
      }
  }
  </code></pre>