如何在android中将数据附加到文件中

如何在android中将数据附加到文件中,android,file,append,Android,File,Append,我正在创建一个包含注册表的android应用程序。如果单击“登录”按钮,将创建一个包含用户名和登录时间的日志文件。我成功创建了文件。但在添加数据时,我遇到了一个EROFS异常。请帮助我如何解决此问题 这是我的家庭活动: package com.techblogon.loginexample; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android

我正在创建一个包含注册表的android应用程序。如果单击“登录”按钮,将创建一个包含用户名和登录时间的日志文件。我成功创建了文件。但在添加数据时,我遇到了一个EROFS异常。请帮助我如何解决此问题

这是我的家庭活动:

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();
    }
}

看看这个:打开相同错误失败:EROFS(只读文件系统)发生dude@SimonMokheleAdd写入sdcardi的权限Dode在清单文件中