内部存储位于 Android 手 机 系 统 下 的“/data/data/< 包 名 >/files” 目 录 中。 使 用 Java 提供的 IO 流体系可以很方便的对内部存储的数据进行读写操作。其中,FileOutputStream 类的openFileOutput() 方法用来打开相应的输出流;而 FileInputStream 类的 openFileInput() 方法用来打开相应的输入流。默认情况下,使用 IO 流保存的文件仅对当前应用程序可见,对于其他应用程序(包括用户)是不可见的(即不能访问其中的数据)。如果用户卸载了应用程序,则保存数据的文件也会一起被删除。
内部存储一般有如下几个常用方法:
1、创建文件并写入数据
/*
* 参数 name:用于指定文件名称,该参数不能包含描述路径的斜杠“/”。
* 参数 mode:用于指定访问权限,可以使用如下取值:
* MODE_PRIVATE:表示文件只能被创建它的程序访问。
* MODE_APPEND:表示追加模式,如果文件存在,则在文件的结尾处添加新数据,否则
创建文件。
* MODE_WORLD_READABLE:表示可以被其他应用程序读,但不能写。
* MODE_WORLD_WRITEABLE:表示可以被其他应用程序读和写。
*/
FileOutputStream fos = openFileOutput(String name, int mode)); //获取文件输出流
fos.write(byte b[]); //写入数据
fos.flush(); //清空缓存
fos.close(); //关闭文件输出流
2.读取存储数据
/*
* name是要读取的文件名
*/
FileInputStream fis = openFileInput(String name); //获取文件输入流
byte[ ] buffer = new byte[fis.available()]; //定义保存数据的数组
fis.read(buffer); //从输入流中读取数据
String content = new String(buffer);//将读取的数据转换成字符串
3.得到存储文件的根目录方法getFilesDir()
public String getFileDir(String filename){
File file = new File(context.getFilesDir(), filename);
return file.getPath();
}
4.得到内部存储的所有文件名方法fileList()
public String[] getAllFile(){
return context.fileList();
}
5.删除指定文件方法deleteFile(……)
public void deleteFile(String filename){
context.deleteFile(filename);
}
6.得到缓存目录方法getCacheDir()
public String getCacheDir(String filename){
return context.getCacheDir().getPath();
}
这里为了方便使用,我创建了一个InternalFileOperation类,用于操作常用内部存储的方法。
代码如下:
import android.content.Context;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import static android.content.Context.MODE_PRIVATE;
public class InternalFileOperation{
private Context context;
private static InternalFileOperation interfile = null;
//得到InternalFileOperation实例
public static InternalFileOperation get(Context context){
if (interfile == null){
interfile = new InternalFileOperation(context);
}
return interfile;
}
//初始化InternalFileOperation类
private InternalFileOperation(Context context) {
this.context = context;
}
//创建文件并保存数据,filename为文件名,content为保存内容
public void savedFile(String filename,String content) {
FileOutputStream fos = null;
try {
fos = context.openFileOutput(filename,MODE_PRIVATE);
fos.write(content.getBytes());
fos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//显示存储的数据,filename为文件名
public String showFile(String filename) {
FileInputStream fis = null;
byte[] buffer = null;
String content = null;
try {
fis = context.openFileInput(filename);
buffer = new byte[fis.available()];
fis.read(buffer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fis.close();
content = new String(buffer);
} catch (IOException e) {
e.printStackTrace();
}
}
return content;
}
//得到根目录,filename为文件名
public String getFileDir(String filename){
File file = new File(context.getFilesDir(), filename);
return file.getPath();
}
//以字符串数组型得到所有内部存储的文件名
public String[] getAllFile(){
return context.fileList();
}
//删除指定文件,filename为文件名
public void deleteFile(String filename){
context.deleteFile(filename);
}
//得到缓存目录
public String getCacheDir(String filename){
return context.getCacheDir().getPath();
}
}
链接:百度网盘下载 提取码:wyoe