<1>CONTEXT.MODE_PRIVATE 私有操作模式, 为默认操作模式,数据只能被本应用访问,此模式下写入的数据,会覆盖原文件内容。
<2>CONTEXT.MODE_APPEND 追加操作模式,也只能被本应用访问,会先判断文件是否存在,若存在就追加在原有文件内容后面,不会把其覆盖掉
<3>CONTEXT.MODE_READABLE 此模式表示当前文件可以被其它应用读取
<4>CONTEXT.MODE_WRITEABLE 此模式表示当前文件可以被其它应用写入
如果既想要其它应用可读,又想要其它应用可写就openFileOutput(“a.text”,CONTEXT.MODE_READABLE+CONTEXT.MODE_WRITEABLE)即可。
android默认的创建的文件在/data/data/包名/files文件夹下,除非创建时指定了可读或可写模式,否者就不可访问
以下4个方法是默认存储读写文件,与sd卡的读写文件
public void saveFile(String filename,String content,Context context){
try {
//此方法默认存储模式 openFileOutput 默默人存储在data/data/包名/files下filename文件中
//可以设置不同的模式决定是否追加或允许其它应用读写
FileOutputStream outStram =context.openFileOutput(filename,Context.MODE_PRIVATE);
outStram.write(content.getBytes());
outStram.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String readFile (String filename,String content,Context context)throws Exception{
//此方法默认存储模式 openFileInput 默认去data/data/包名/files下filename文件中
FileInputStream inputStream = context.openFileInput(filename);
ByteArrayOutputStream bas = new ByteArrayOutputStream();
byte[] bt = new byte[1024];
int len ;
while((len = inputStream.read(bt)) != -1){
bas.write(bt,0,len);
}
byte[] data= bas.toByteArray();
bas.close();
inputStream.close();
return new String(data);
}
注意往sd卡中读写数据是要在manifast.xml文件中添加相应的权限
public String readFileSdcard (String filepath)throws Exception{
//此方法会根据filepath路径去读文件 如:/sdcard/ff/a.text
FileInputStream inputStream = new FileInputStream(filepath);
ByteArrayOutputStream bas = new ByteArrayOutputStream();
byte[] bt = new byte[1024];
int len ;
while((len = inputStream.read(bt)) != -1){
bas.write(bt,0,len);
}
byte[] data= bas.toByteArray();
bas.close();
inputStream.close();
return new String(data);
}
public void saveFileToSdcard(String path,String filename,String content){
try {
//此方法会把内容content写入到 path路径下的filename文件中
File filepath = new File(path,filename);
FileOutputStream outStram =new FileOutputStream(filepath);
outStram.write(content.getBytes());
outStram.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}