四、用文件对数据进行存储
来源:互联网 发布:linux虚拟机挂载光盘 编辑:程序博客网 时间:2024/04/18 19:24
四、用文件对数据进行存储
文件对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体 的实现过程与在J2SE环境中保存数据到文件中是一样的。
public class FileActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { ... FileOutputStream outStream = this.openFileOutput("android.txt", Context.MODE_PRIVATE); outStream.write("文件写入".getBytes()); outStream.close(); } }
openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。
创建的文件保存在/data/data//files目录,如: /data/data/cn.android.action/files/android.txt 。
通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data//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//files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。
读取文件内容
如果要打开存放在/data/data//files目录应用私有的文件,可以使用Activity提供openFileInput()方法。
FileInputStream inStream = this.getContext().openFileInput("android.txt"); Log.i("FileTest", readInStream(inStream));
readInStream()的方法请看下面备注。
或者直接使用文件的绝对路径:File file = new File("/data/data/cn.android.action/files/android.txt"); FileInputStream inStream = new FileInputStream(file);
Log.i(“FileTest”, readInStream(inStream));
/*备注:public static String readInStream(FileInputStream inStream){ try { ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length = -1; while((length = inStream.read(buffer)) != -1 ){ outStream.write(buffer, 0, length); } outStream.close(); inStream.close(); return outStream.toString(); } catch (IOException e) { Log.i("FileTest", e.getMessage()); } return null; }
—————————————————————————————— **/
注意:上面文件路径中的“cn.android.action”为应用所在包,当你在编写代码时应替换为你自己应用使用的包。
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<package name>/cache目录 getFilesDir()方法用于获取/data/data/<package name>/files目录
- 四、用文件对数据进行存储
- 使用文件对数据进行存储、访问
- 文件进行数据存储
- 使用文件进行数据存储
- 使用文件进行数据存储
- 使用文件进行数据存储
- 使用文件进行数据存储
- 读取省市区文件,并对文件内的数据进行处理和存储
- 数据存储之(四):文件存储
- 四种方式对数据进行统计
- Android—文件进行数据存储(四中操作模式)
- 利用RandomAccessFile对文件进行切割存储
- 用C语言对数据或文件内容进行加密
- 利用python进行数据分析(四):数据加载、存储
- Android 数据存储 之 使用文件进行数据存储
- android之使用文件进行数据存储
- android基础---使用文件进行数据存储
- 使用文件进行数据存储的模式
- PHP 底层的运行机制与原理
- 解决Vim/Gvim插入模式下backspace按键无法删除字符的问题
- 简单易学的机器学习算法——极限学习机(ELM)
- shell的GoodCoder的编写
- 总结
- 四、用文件对数据进行存储
- Python学习笔记--DataFrame使用
- ZZULI 1917: E
- 位运算入门应用以及技巧
- 【BZOJ1013】球形空间产生器,第一次的高斯消元
- 五、Android的assets资源使用
- java经典问题生兔子
- tshark的使用
- PAT乙级.1022. D进制的A+B (20)