Android内部存储文件之数据读取

1:Android开发中,离不开对文件的操作,因为文件可以存储大量数据,掌握相关技术可以为开发带来许多便利,一下便是我们的应用在手机或者模拟器上的内部存储位置。

 

2:通过一个简单的程序实现对android应用的内部文件的读取操作,页面如下:

 

3:示例代码如下:

package cativity.cyq.readwriteintemaldata;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;


public class MainActivity extends ActionBarActivity {

    private final String FILE_NAME = "text.txt";
    private Button writrBTN;
    private Button readBTN;
    private EditText writeEdit;
    private TextView showTEXT;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // final File fileName=new File(FILE_NAME);
        writrBTN = (Button) findViewById(R.id.write_btn);
        readBTN = (Button) findViewById(R.id.read_btn);
        writeEdit = (EditText) findViewById(R.id.write_edit);
        showTEXT = (TextView) findViewById(R.id.show_text);

        writrBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    /*调用openFileOutput()方法,如果文件存在则只用该文件,不存在,则创建该文件。
                    MODE_APPEND表示在文本的末尾追加数据,不覆盖原有的数据*

                    Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
                    Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
                    MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
                    MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。*/

                    FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);
                    OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
                    osw.write(writeEdit.getText().toString());
                    //osw.write("hello Wrold !");
                    osw.flush();
                    fos.flush();
                    osw.close();
                    fos.close();
                    Toast.makeText(MainActivity.this, "写入成功", Toast.LENGTH_SHORT).show();

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }


        });

        readBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                try {

                    FileInputStream fps = openFileInput(FILE_NAME);
                    InputStreamReader isr = new InputStreamReader(fps, "UTF-8");
                    BufferedReader br = new BufferedReader(isr);
                    StringBuilder sBuilder = new StringBuilder();
                    String line = "";
                    while ((line = br.readLine()) != null) {
                        sBuilder.append(line);
                    }
                    showTEXT.setText(sBuilder.toString());
                    Toast.makeText(MainActivity.this, "读取成功", Toast.LENGTH_SHORT).show();

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }
        });

    }


}

 

posted @ 2015-07-31 23:06  木头同学  阅读(2820)  评论(0编辑  收藏  举报