android数据存储之Files

android数据存储之Files

Files存储可以通过Activity提供的openFileOutput()方法将数据保存到指定的文件中,也可以通过openFileInput来读取存储的文件。通常可以用来存放文本,图片,音频等文件,其文件默认存放位置为:/data/data/<包名>/files目录下。
基于上面的例子,新建一个activity实现如下:
package com.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

import android.os.Bundle;
import android.app.Activity;

public class Activity2 extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
//将数据保存到文件中
saveFile();
//从文件中获取数据
getFile();

}

public void saveFile(){
System.out.println("save file");
//构建properties对象,保存数据
Properties properties = new Properties();
properties.put("name", "xmong");
properties.put("age", "20");

try {
//以私有模式打开file.cfg文件,如果该文件不存在则系统会自动创建它
FileOutputStream fos = this.openFileOutput("file.cfg", MODE_PRIVATE);
//将数据打包存储
properties.store(fos, "");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}


public void getFile(){

System.out.println("get file");
//构建properties对象
Properties properties = new Properties();
try {
//打开file.cfg的读取流
FileInputStream fis = this.openFileInput("file.cfg");
//将数据加载到properties对象中
properties.load(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("name:"+properties.getProperty("name"));
System.out.println("age:"+properties.getProperty("age"));

}


}

activity程序运行结果如下:
save file
get file
name:xmong
age:20


程序运行后通过DDMS的File Explor查看到/data/data/com.example/files目录下生成了一个file.cfg文件,导出该文件内容如下:

#
#Wed Apr 17 07:40:04 GMT+00:00 2013
age=20
name=xmong


上面使用openFileOutput()需要指定两个参数,第一个参数为文件路径名,第二个参数为文件的操作模式,Context提供了四种操作模式:
Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2

MODE_PRIVATE:私有模式,一般为默认操作模式,代表该文件是私有数据,只能被该应用访问。在该模式下写入的数据都是覆盖原文件中的内容。
MODE_APPEND:追加模式,在该模式下写入的数据都是追加到文件内容中。
MODE_WORLD_READABLE:表示当前文件可以被其他应用程序读取。
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用程序写入。
如果希望其他应用程序可以对文件进行读和写,则可以将操作模式制定为:MODE_WORLD_READABLE+ MODE_WORLD_WRITEABLE。即:
FileOutputStream fos = this.openFileOutput("file.cfg", MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE);
Android系统有自己的一套安全模型,当应用程序(.apk)在安装时系统就会给其分配一个userid,当一个应用程序要去访问资源文件的时候就需要userid匹配,默认情况下,其他应用程序不能访问该应用程序的资源文件,除非将需要其他应用访问的资源指定为MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE模式。
如果要获取Files的存储路径我们也可以同Activity提供的getFileDir()方法来获取/data/data/<包名>/files目录。

源代码下载:[url]http://xmong.iteye.com/blog/1852204[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值