数据的存储与访问
2014-05-28 21:33
148 查看
Android为数据存储提供了如下几种方式:
文件
SharedPreferences(参数)
SQLite数据库
内容提供者(Content provider)
网络
Activity提供了openFileOutput()方法可以用于把数据输出到文件中,openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/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:表示当前文件可以被其他应用写入。
For example:
public void save(String fileName, String content, int mode) {
// 记住密码
try {
// 通过openFileputStream打开文件
FileOutputStream fos = context.openFileOutput(fileName, mode);
fos.write(content.getBytes());
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String[] readFile(String fileName) {
String[] split = null;
File file = new File(context.getFilesDir(),fileName);
if (file.exists()) {
try {
// 根据文件创建出文件的输入流
InputStream is = new FileInputStream(file);
// 通过工具类读取文件的内容
String value = StreamTools.streamToStr(is);
// 按照分号进行拆分
split = value.split(";");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 记得返回声明的对象
return split;
}
调用方法:internalStorage.save(fileName, content,Context.MODE_PRIVATE);
String values[] = internalStorage.readFile(fileName);
我们也可以将file文件保存到外部的存储设备中,如SDCrad:
在程序中访问SDCard,你需要申请访问SDCard的权限。
在AndroidManifest.xml中加入访问SDCard的权限如下:
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
通过方法调用的不同,存放路径可分公有文件和私密文件。公有文件可供所有人读写,但私密文件却只能够给自己看到。当应用被卸载时,公有文件依然会保留,而私密文件会随之被删除。
公有文件的方法:
For example:
public void save(String dir,String content,String fileName) {
//演示公共文件
File sdCardDir = Environment.getExternalStoragePublicDirectory(dir);
File file = new File(sdCardDir,fileName);
try {
FileOutputStream raf = new FileOutputStream(file);
raf.write(content.getBytes());
raf.flush();
raf.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String[] readFile(String dir, String fileName) {
//声明返回值
String[] split = null;
File pdFile = new File(Environment.getExternalStoragePublicDirectory(dir), fileName);
if (pdFile.exists()) {
try {
// 根据文件创建出文件的输入流
InputStream is = new FileInputStream(pdFile);
// 通过工具类读取文件的内容
String value = StreamTools.streamToStr(is);
// 按照分号进行拆分
split = value.split(";");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return split;
}
调用的方法:String values[] = internalStorage.readFile(Environment.DIRECTORY_DOWNLOADS,fileName);
internalStorage.save(Environment.DIRECTORY_DOWNLOADS,content,fileName);
私有文件的方法:
For example:
public void save(String dir,String content,String fileName) {
//演示公共文件
File sdCardDir = context.getExternalFilesDir(dir);
File file = new File(sdCardDir,fileName);
try {
FileOutputStream raf = new FileOutputStream(file);
raf.write(content.getBytes());
raf.flush();
raf.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String[] readFile(String dir, String fileName) {
//声明返回值
String[] split = null;
File pdFile = new File(context.getExternalFilesDir(dir), fileName);
if (pdFile.exists()) {
try {
// 根据文件创建出文件的输入流
InputStream is = new FileInputStream(pdFile);
// 通过工具类读取文件的内容
String value = StreamTools.streamToStr(is);
// 按照分号进行拆分
split = value.split(";");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return split;
}
调用的方法:String values[] = internalStorage.readFile(Environment.DIRECTORY_DOWNLOADS,fileName);
internalStorage.save(Environment.DIRECTORY_DOWNLOADS,content,fileName);
文件
SharedPreferences(参数)
SQLite数据库
内容提供者(Content provider)
网络
Activity提供了openFileOutput()方法可以用于把数据输出到文件中,openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/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:表示当前文件可以被其他应用写入。
For example:
public void save(String fileName, String content, int mode) {
// 记住密码
try {
// 通过openFileputStream打开文件
FileOutputStream fos = context.openFileOutput(fileName, mode);
fos.write(content.getBytes());
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String[] readFile(String fileName) {
String[] split = null;
File file = new File(context.getFilesDir(),fileName);
if (file.exists()) {
try {
// 根据文件创建出文件的输入流
InputStream is = new FileInputStream(file);
// 通过工具类读取文件的内容
String value = StreamTools.streamToStr(is);
// 按照分号进行拆分
split = value.split(";");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 记得返回声明的对象
return split;
}
调用方法:internalStorage.save(fileName, content,Context.MODE_PRIVATE);
String values[] = internalStorage.readFile(fileName);
我们也可以将file文件保存到外部的存储设备中,如SDCrad:
在程序中访问SDCard,你需要申请访问SDCard的权限。
在AndroidManifest.xml中加入访问SDCard的权限如下:
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
通过方法调用的不同,存放路径可分公有文件和私密文件。公有文件可供所有人读写,但私密文件却只能够给自己看到。当应用被卸载时,公有文件依然会保留,而私密文件会随之被删除。
公有文件的方法:
For example:
public void save(String dir,String content,String fileName) {
//演示公共文件
File sdCardDir = Environment.getExternalStoragePublicDirectory(dir);
File file = new File(sdCardDir,fileName);
try {
FileOutputStream raf = new FileOutputStream(file);
raf.write(content.getBytes());
raf.flush();
raf.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String[] readFile(String dir, String fileName) {
//声明返回值
String[] split = null;
File pdFile = new File(Environment.getExternalStoragePublicDirectory(dir), fileName);
if (pdFile.exists()) {
try {
// 根据文件创建出文件的输入流
InputStream is = new FileInputStream(pdFile);
// 通过工具类读取文件的内容
String value = StreamTools.streamToStr(is);
// 按照分号进行拆分
split = value.split(";");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return split;
}
调用的方法:String values[] = internalStorage.readFile(Environment.DIRECTORY_DOWNLOADS,fileName);
internalStorage.save(Environment.DIRECTORY_DOWNLOADS,content,fileName);
私有文件的方法:
For example:
public void save(String dir,String content,String fileName) {
//演示公共文件
File sdCardDir = context.getExternalFilesDir(dir);
File file = new File(sdCardDir,fileName);
try {
FileOutputStream raf = new FileOutputStream(file);
raf.write(content.getBytes());
raf.flush();
raf.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String[] readFile(String dir, String fileName) {
//声明返回值
String[] split = null;
File pdFile = new File(context.getExternalFilesDir(dir), fileName);
if (pdFile.exists()) {
try {
// 根据文件创建出文件的输入流
InputStream is = new FileInputStream(pdFile);
// 通过工具类读取文件的内容
String value = StreamTools.streamToStr(is);
// 按照分号进行拆分
split = value.split(";");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return split;
}
调用的方法:String values[] = internalStorage.readFile(Environment.DIRECTORY_DOWNLOADS,fileName);
internalStorage.save(Environment.DIRECTORY_DOWNLOADS,content,fileName);
相关文章推荐
- 使用数据2分处理的通用分页存储过程 前半部分与后半部分数据访问时间相同
- SQL 数据存储过程 数据访问 用C#编写
- 【自然框架】数据访问之精雕细琢(一)存储过程的参数
- android学习笔记8--------------数据的存储与访问(2)
- android学习笔记6--------------数据的存储与访问(1)
- 将 SQL Server 存储过程用于数据访问
- android 数据存储和访问方式四:ContentProvider(内容提供者、数据共享)详解
- Android 学习笔记7---数据存储与访问
- android数据存储与访问
- android 数据存储和访问方式三:SQLite数据库详解
- 我的数据访问层的源代码(四)存储过程部分,包括存储过程的参数
- List容器存储对话框控件句柄,并访问list数据设置控件文本
- 21天学通c++之第二周 指针 8.6 访问自由存储区中对象的成员数据
- Android 数据存储与访问 SharedPreferences
- bcdedit无法打开启动配置数据存储拒绝访问
- 层次(树型)数据的存储与访问(一)
- 使用数据2分处理的通用分页存储过程 前半部分与后半部分数据访问时间相同,同等访问速度提高一倍
- 通过存储过程访问SQL数据
- 使用文件对数据进行存储、访问
- android 数据存储和访问方式二:SharedPreferences(共享参数)详解