zoukankan      html  css  js  c++  java
  • 【Android数据存储】内部存储

    1、概述

      默认情况下,保存到内部存储的文件是应用的私有文件,其他应用(和用户)不能访问这些文件。 当用户卸载您的应用时,这些文件也会被移除。

    2、写入文件

      要创建私有文件并写入到内部存储:

    1. 使用文件名称和操作模式调用 openFileOutput()。 这将返回一个 FileOutputStream
    2. 使用 write() 写入到文件。
    3. 使用 close() 关闭流式传输。

      简单示例如下:  

    String FILENAME = "hello_file";
    String string = "hello world!";
    
    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
    fos.write(string.getBytes());
    fos.close();

       MODE_PRIVATE 将会创建文件(或替换具有相同名称的文件),并将其设为应用的私有文件。 其他可用模式包括:MODE_APPENDMODE_WORLD_READABLE和 MODE_WORLD_WRITEABLE

       备注:自 API 级别 17 以后,常量 MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE 已被弃用。从 Android N 开始,使用这些常量将会导致引发 SecurityException。这意味着,面向 Android N 和更高版本的应用无法按名称共享私有文件,尝试共享“file://”URI 将会导致引发FileUriExposedException。 如果您的应用需要与其他应用共享私有文件,则可以将 FileProvider 与 FLAG_GRANT_READ_URI_PERMISSION 配合使用。另请参阅共享文件。

    3、读取文件   

      要从内部存储读取文件:

    1. 调用 openFileInput() 并向其传递要读取的文件名称。 这将返回一个 FileInputStream
    2. 使用 read() 读取文件字节。
    3. 然后使用 close() 关闭流式传输。

       上面的方法主要用于读取主动写入的文件。

      静态文件读取:

      如果在编译时想要保存应用中的静态文件,请在项目的 res/raw/ 目录中保存该文件。 可以使用 openRawResource() 打开该资源并传递 R.raw.<filename> 资源 ID。 此方法将返回一个 InputStream,您可以使用该流式传输读取文件(但不能写入到原始文件)

    4、其他实用方法 

      getFilesDir():获取在其中存储内部文件的文件系统目录的绝对路径。

      getDir():在内部存储空间内创建(或打开现有的)目录。

      deleteFile():删除保存在内部存储的文件。

      fileList():返回您的应用当前保存的一系列文件。

  • 相关阅读:
    Java学习之Java历史版本
    小数的二进制转换
    cpp反汇编调试一
    理解 typedef 定义的函数指针
    mov 与 lea 区别
    asmlinkage的用法
    秒的换算:ms(毫秒),μs(微秒),ns(纳秒),ps(皮秒)
    Java字节码例子解析
    Go程序的一生是怎样的?
    Linux内核 hlist_head/hlist_node结构解析
  • 原文地址:https://www.cnblogs.com/shidian/p/7482545.html
Copyright © 2011-2022 走看看