android中文件存储常用到以下方法:
l文件
lSharedPreferences(参数)
lSQLite
数据库
lContent
provider内容提供者
创建Fileoutputstream有多种方法:
FileOutputStreamoutStream= this.openFileOutput("itcast.txt", Context.MODE_PRIVATE);
FileOutputStream fosFileOutputStream = new FileOutputStream(mfile);
FileOutputStream fosFileOutputStream = new FileOutputStream(filepath);
第一种方法必须是context上下文中所具有的,后面是根据文件路径+文件名,以及文件的String路径。这里的mfile也是一个路径。
下面介绍四种方法将文件存储到本地:
openFileOutput 文件存储的地址是创建的文件保存在/data/data/<packagename>/files目录。
下面还有一些常用的属性要注意:
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
public
static
void save1(Context mContext){
try {
FileOutputStream fOutputStream = mContext.openFileOutput("test001.txt", mContext.MODE_PRIVATE);
fOutputStream.write(("test001 001!").getBytes());
fOutputStream.flush();
fOutputStream.close();
} catch (Exception e) {
//
TODO: handle exception
e.printStackTrace();
}
}
public
static
void save2(Context mContext){
try {
File filepath = mContext.getFilesDir();
File mfile =
new File(filepath, "test002.txt");
//File filepath1 = mContext.getCacheDir();
//FileOutputStream fosFileOutputStream = new FileOutputStream(filepath);
FileOutputStream fosFileOutputStream =
new FileOutputStream(mfile);
fosFileOutputStream.write(("test002 123").getBytes());
fosFileOutputStream.flush();
fosFileOutputStream.close();
} catch (Exception e) {
//
TODO: handle exception
e.printStackTrace();
}
}
public
static
void save3(Context mContext){
try {
String filepath =
"/data/data/com.zhengwei.write/test003.txt";
FileOutputStream fosFileOutputStream =
new FileOutputStream(filepath);
fosFileOutputStream.write(("test003 123456").getBytes());
fosFileOutputStream.flush();
fosFileOutputStream.close();
} catch (Exception e) {
//
TODO: handle exception
e.printStackTrace();
}
}
public
static
boolean save4(Context mcontext) {
try {
// 判断当前的手机是否有sd卡
String state = Environment.getExternalStorageState();
if(!Environment.MEDIA_MOUNTED.equals(state)) {
// 已经挂载了sd卡
return
false;
}
File sdCardFile = Environment.getExternalStorageDirectory();
File file =
new File(sdCardFile, "test004.txt");
FileOutputStream fos =
new FileOutputStream(file);
String data =
"test004 789";
fos.write(data.getBytes());
fos.flush();
fos.close();
return
true;
}
catch (Exception e) {
e.printStackTrace();
}
return
false;
}
读取文件验证方法:
public
void readdata(Context mContext){
try {
//读取文件test001
//FileInputStream
fis = this.openFileInput("test001.txt");
//读取文件test002
//File
filepath = mContext.getFilesDir();
//File
mfile = new File(filepath, "test002.txt");
//FileInputStream
fis = new FileInputStream(mfile);
//读取文件test003
//String
filepath = "/data/data/com.zhengwei.write/test003.txt";
//FileInputStream
fis = new FileInputStream(filepath);
//读取文件test004
File sdCardFile = Environment.getExternalStorageDirectory();
File file =
new File(sdCardFile, "test004.txt");
FileInputStream fis =
new FileInputStream(file);
BufferedReader
reader = new BufferedReader(new InputStreamReader(fis));
String text = reader.readLine();
System.out.println(text);
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
//
TODO: handle exception
e.printStackTrace();
}
}