Android数据存取之Files

如同前面说的使用Preferences一样,使用File来读写文件也属于常规思路。在Android中没有提供像J2SE里面多的让人抓狂的有关于IO的API。所以使用起来非常简单轻巧。

在Android系统中,这些文件保存在 /data/data/PACKAGE_NAME/files 目录下。

数据读取

public static String read(Context context, String file) { 
String data = ""; 
try { 
FileInputStream stream = context.openFileInput(file); 
StringBuffer sb = new StringBuffer(); 
int c; 
while ((c = stream.read()) != -1) { 
sb.append((char) c); 

stream.close(); 
data = sb.toString(); 
} catch (FileNotFoundException e) { 
} catch (IOException e) { 
} return data; 

public static String read(Context context, String file) {
String data = "";
try {
FileInputStream stream = context.openFileInput(file);
StringBuffer sb = new StringBuffer();
int c;
while ((c = stream.read()) != -1) {
sb.append((char) c);
}

stream.close();
data = sb.toString();

} catch (FileNotFoundException e) {
} catch (IOException e) {
}

return data;

}

从代码上,看起来唯一的不同就是文件的打开方式了: context.openFileInput(file); Android中的文件读写具有权限控制,所以使用context(Activity的父类)来打开文件,文件在相同的Package中共享。这里的 Package的概念同Preferences中所述的Package,不同于Java中的Package。

数据写入

public static void write(Context context, String file, String msg) { 

try { 

FileOutputStream stream = context.openFileOutput(file, 

Context.MODE_WORLD_WRITEABLE); 

stream.write(msg.getBytes()); 

stream.flush(); 

stream.close(); 

} catch (FileNotFoundException e) { 

} catch (IOException e) { 

public static void write(Context context, String file, String msg) {

try {

FileOutputStream stream = context.openFileOutput(file,

Context.MODE_WORLD_WRITEABLE);

stream.write(msg.getBytes());

stream.flush();

stream.close();

} catch (FileNotFoundException e) {

} catch (IOException e) {

}

}

在这里打开文件的时候,声明了文件打开的方式。

一般来说,直接使用文件可能不太好用,尤其是,我们想要存放一些琐碎的数据,那么要生成一些琐碎的文件,或者在同一文件中定义一下格式。其实也可以将其包装成Properties来使用:

public static Properties load(Context context, String file) { 

Properties properties = new Properties(); 

try { 

FileInputStream stream = context.openFileInput(file); 

properties.load(stream); 

} catch (FileNotFoundException e) { 

} catch (IOException e) { 

return properties; 

public static void store(Context context, String file, Properties properties) { 

try { 

FileOutputStream stream = context.openFileOutput(file, 

Context.MODE_WORLD_WRITEABLE); 

properties.store(stream, ""); 

} catch (FileNotFoundException e) { 

} catch (IOException e) { 

Posted in 手机相关 by 傻猫 at September 14, 2011.
Tags: Android, 配置文件, 数据存取, 自动保存帐号密码

添加新评论