很多时候我们的软件需要对处理后的数据进行存储或再次访问。Android为数据存储提供了多种方式,
分别有如下几种:
SharedPreferences
SQLite数据库
内容提供者(Content provider)
网络
一、使用文件进行数据存储
Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。
public class FileActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
...
FileOutputStream outStream = this.openFileOutput("itcast.txt", Context.MODE_PRIVATE);
outStream.write("传智播客".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 ,只有这样其他程序才能正确访问。
读取文件内容
如果要打开存放在/data/data/<package name>/files目录应用私有的文件,可以使用Activity提供openFileInput()方法。
FileInputStream inStream = this.getContext().openFileInput("itcast.txt");
Log.i("FileTest", readInStream(inStream));
readInStream()的方法请看本页下面备注。
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;
}
或者直接使用文件的绝对路径:
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目录
分享到:
相关推荐
Android_数据存储与访问——文件[归类].pdf
数据存储与访问之——文件存储读写
第6章 Android数据存储与共享 6.1 数据存储与共享方式概述 6.2 首选项信息 6.2.1 私有数据存储 6.2.2 公有数据存储与共享 6.3 数据文件 6.3.1 内存数据文件 6.3.2 SD卡数据文件 6.4 SQLite数据库 ...
Seafile是一个面向企业的文件云存储系统,目的是解决文件管理、共享和跨平台访问等问题。在此基础上,Seafile提供群组协作的功能,形成一个以文档为中心的协作平台。Seafile项目创始人潘凌涛在开源力量公开课2013...
8.1 bcdedit——配置数据存储编辑器 349 8.1.1 bcdedit命令简介 349 8.1.2 应用于存储的bcdedit命令选项 349 8.1.3 应用于存储项的bcdedit命令选项 351 8.1.4 应用于项目操作的bcdedit命令选项 355 8.1.5 控制输出的...
《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...
1. 分布式文件系统与HDFS 2. HDFS 的shell 操作 3. HDFS 体系结构与基本概念 4 HDFS 的web 接口 5. HDFS 的java 访问接口 6. HDFS 的RPC 机制 7. NameNode 的接口分析 8. DataNode 的接口分析 9. HDFS 的写数据过程...
4.2.4 结构化存储示例——例程StructStore 4.3 永久对象 4.3.1 永久接口 4.3.2 永久对象编程——例程PersistText 4.3.3 永久对象客户编程——例程PersistClient 4.4 命名与绑定技术 4.4.1 COM名字对象与IMoniker ...
信息构建成单元形式——文件(file),实现文件的存储,访问,创建,删除。 操作系统负责管理文件,实现文件的构造,命名,存取,使用,保护。实现该功能的程序称为文件系统(FILE SYSTEM)。 用户的角度:用户怎样...
8.1 bcdedit——配置数据存储编辑器 349 8.1.1 bcdedit命令简介 349 8.1.2 应用于存储的bcdedit命令选项 349 8.1.3 应用于存储项的bcdedit命令选项 351 8.1.4 应用于项目操作的bcdedit命令选项 355 8.1.5 控制输出的...
8.1 bcdedit——配置数据存储编辑器 349 8.1.1 bcdedit命令简介 349 8.1.2 应用于存储的bcdedit命令选项 349 8.1.3 应用于存储项的bcdedit命令选项 351 8.1.4 应用于项目操作的bcdedit命令选项 355 8.1.5 控制输出的...
8.1 bcdedit——配置数据存储编辑器 349 8.1.1 bcdedit命令简介 349 8.1.2 应用于存储的bcdedit命令选项 349 8.1.3 应用于存储项的bcdedit命令选项 351 8.1.4 应用于项目操作的bcdedit命令选项 355 8.1.5 控制输出的...
数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫...
8.1 bcdedit——配置数据存储编辑器 349 8.1.1 bcdedit命令简介 349 8.1.2 应用于存储的bcdedit命令选项 349 8.1.3 应用于存储项的bcdedit命令选项 351 8.1.4 应用于项目操作的bcdedit命令选项 355 8.1.5 控制输出的...
6.9 访问本机内存与存储卡——File的创建与删除 6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——...
6.9 访问本机内存与存储卡——File的创建与删除 6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——...
6.9 访问本机内存与存储卡——File的创建与删除 6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——...
*5.6 C++处理字符串的方法——字符串类与字符串变量 5.6.1 字符串变量的定义和引用 5.6.2 字符串变量的运算 5.6.3 字符串数组 5.6.4 字符串运算举例 习题 第6章 指针 6.1 指针的概念 6.2 变量与指针 6.2.1 定义...
数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫...
数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫...