zoukankan      html  css  js  c++  java
  • Android 数据存储和文件使用案例分析

      很多时候我们的软件需要对处理后的数据进行存储或再次访问。Android为数据存储提供了如下几种方式:
      文件
      SharedPreferences(参数)
      SQLite数据库
      内容提供者(Content provider)
      网络
      一. 文件
      1.1使用文件进行数据存储
      Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。

    public class FileActivity extends Activity {
     
        @Override public void onCreate(Bundle savedInstanceState) {
     
            ...
     
             FileOutputStream outStream = this.openFileOutput("hello.txt", Context.MODE_PRIVATE);
     
             outStream.write("hello".getBytes());
     
             outStream.close();   
     
        }
     
    }
    

      openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/<package name>/files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目录就可以看到该文件。
      openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为:

      Context.MODE_PRIVATE    =  0
      Context.MODE_APPEND    =  32768
      Context.MODE_WORLD_READABLE =  1
      Context.MODE_WORLD_WRITEABLE =  2
    

      Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
      Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
      Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
      MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
      如果希望文件被其他应用读和写,可以传入:
      openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
      Android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/<package name>/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者
      Context.MODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。
      1.2 读取文件内容
      如果要打开存放在/data/data/<package name>/files目录应用私有的文件,可以使用Activity提供openFileInput()方法。
      FileInputStream inStream = this.getContext().openFileInput("itcast.txt");
      Log.i("FileTest", readInStream(inStream));
      readInStream()的方法请看本页下面备注。
      或者直接使用文件的绝对路径:

    File file = new File("/data/data/cn.itcast.action/files/itcast.txt");
    FileInputStream inStream = new FileInputStream(file);
    Log.i("FileTest", readInStream(inStream));
    

     
    注意:上面文件路径中的“cn.itcast.action”为应用所在包,当你在编写代码时应替换为你自己应用使用的包。

      对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。

      Activity还提供了getCacheDir()和getFilesDir()方法:
      getCacheDir()方法用于获取/data/data/<package name>/cache目录
      getFilesDir()方法用于获取/data/data/<package name>/files目录

  • 相关阅读:
    Windows 8实例教程系列 开篇
    qt 开发发布于 windeploy.exe
    qt qoci 测试验证
    vmware vmx 版本不兼容
    qt oracle
    vc qt dll
    QOCIDriver unable to create environment
    qoci 编译完 放置位置 具体根据情况
    calling 'lastError' with incomplete return type 'QSqlError' qsqlquer
    Hbase 操作工具类
  • 原文地址:https://www.cnblogs.com/vus520/p/2561876.html
Copyright © 2011-2022 走看看