File存储(内部存储)

一旦程序在设备安装后,data/data/包名/ 即为内部存储空间,对外保密。
Context提供了2个方法来打开输入、输出流

FileInputStream openFileInput(String name)
FileOutputStream openFileOutput(String name, int mode)

public class MainActivity extends Activity {

    private TextView show;
    private EditText et;
    private String filename = "test";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        show = (TextView) findViewById(R.id.show);
        et = (EditText) findViewById(R.id.et);

        findViewById(R.id.write).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
                    //FileOutputStream是字节流,如果是写文本的话,需要进一步把FileOutputStream包装 UTF-8是编码
                    OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
                    //写
                    osw.write(et.getText().toString());
                    osw.flush();
                    fos.flush();
                    osw.close();
                    fos.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }); 
        
        findViewById(R.id.read).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    FileInputStream fis = openFileInput(filename);
                    //当输入输出都指定字符集编码的时候,就不会出现乱码的情况
                    InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
                    //获取文件的可用长度,构建一个字符数组
                    char[] input = new char[fis.available()];
                    isr.read(input);
                    isr.close();
                    fis.close();
                    String readed = new String(input);
                    show.setText(readed);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });         
    }   
}

data/data/packagename/files/test就是我们写入的文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,119评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,680评论 0 17
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • 说一句笔直往前的再见, 我困在 你困意与梦境之间, 最飘渺、 柔软与不可预期的会面。 一杯酒, 豪饮也无法满足我余...
    爱伦同学阅读 268评论 0 2
  • Many successful people are used to getting up early. For ...
    玲玲A阅读 594评论 2 0