Andoid系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储,SharedPreference存储以及SQLite数据库存。
储。此外还可以将数据保存在手机的SD卡中,但是安全性较弱。
文件存储将不对存储的内容进行任何的格式化处理,用于存储一些简单的文本数据或二进制数据。
Context类提供openFileOutput与openFileinput方法,分别返回一个FileOutputstram与Fileinputstream对象。
1、openFileOutput("文件名",操作模式)
文件名不能包含路径,所有文件默认存储到/data/data<package name>/file/目录下。
在eclipse中通过DDMS视图中的File Explorer进入目录查看。
主要操作模式:
MODE_PRIVATE 默认模式,内容覆盖原内容。
MODE_APPEND 模式若文件不存在则创建新文件,已存在则追加内容。
MODE_WORLD_READABLE,MODE_WOELD_WRITEABLE模式在android4.2版本已被废弃。
简单demo如下:
2、openFileInput("文件名")
从/data/data<package name>/file/目录下通过文件名加载文件。
简单demo如下:
储。此外还可以将数据保存在手机的SD卡中,但是安全性较弱。
文件存储将不对存储的内容进行任何的格式化处理,用于存储一些简单的文本数据或二进制数据。
Context类提供openFileOutput与openFileinput方法,分别返回一个FileOutputstram与Fileinputstream对象。
1、openFileOutput("文件名",操作模式)
文件名不能包含路径,所有文件默认存储到/data/data<package name>/file/目录下。
在eclipse中通过DDMS视图中的File Explorer进入目录查看。
主要操作模式:
MODE_PRIVATE 默认模式,内容覆盖原内容。
MODE_APPEND 模式若文件不存在则创建新文件,已存在则追加内容。
MODE_WORLD_READABLE,MODE_WOELD_WRITEABLE模式在android4.2版本已被废弃。
简单demo如下:
//保存字符串"Hello World"到data文件
public void saveData()
{
FileOutputStream out=null;
OutputStreamWriter osw=null;
BufferedWriter writer=null;
String content="Hello World";
try {
out=openFileOutput("data", Context.MODE_PRIVATE);
osw=new OutputStreamWriter(out);
writer=new BufferedWriter(osw);
writer.write(content);
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(writer!=null)
{
writer.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
2、openFileInput("文件名")
从/data/data<package name>/file/目录下通过文件名加载文件。
简单demo如下:
//得到从data文件中读取的字符串
public String loadData()
{
FileInputStream in =null;
InputStreamReader isr=null;
BufferedReader reader =null;
String line;
StringBuilder build = new StringBuilder();
try {
in = openFileInput("data");
isr = new InputStreamReader(in);
reader = new BufferedReader(isr);
while((line=reader.readLine())!=null)
{
build.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(reader!=null)
{
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return build.toString();
}
总结文件存储核心技术其实就是Context类中提供的openFileOutput与openFileinput方法,然后就是使用java的各种流来进行读写操作。