openFileOutput和openFileInput获取手机内存中的文件而不是SD卡中的。
openFileInput(Stringname):直接得到/data/data/当前app包名/files/name文件的输入流
openFileOutput(Stringname,intmode):直接得到/data/data/当前app包名/files/name文件的输出流,mode为写入文件时的权限
1、Android数据访问权限实现方式
Context类的publicabstractFileOutputStreamopenFileOutput(Stringname,intmode)
2、其中mode就是文件访问权限模式,主要4种模式
Context.MODE_PRIVATE:私有模式(默认模式),只能被应用本身和同一群组的人访问;写入的内容覆盖原文件内容
Context.MODE_APPEND:追加模式也是私有模式,只能被应用本身和同一群组的人访问;如果文件存在就追加内容,如果文件不存在就新建文件并写入内容
Context.MODE_WORLD_READABLE:所有人可读权限
Context.MODE_WORLD_WRITEABLE:所有人可写权限
也可通过多个组合同时拥有多个读写权限,Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE表示所有人可读+可写
public class MainActivity extends Activity {
private EditText et;
private Button saveButton, readButton;
private TextView show;
private boolean MyWrite() {
try {
FileOutputStream fos = openFileOutput("data",
Context.MODE_WORLD_READABLE);
String content = et.getText().toString();
fos.write(content.getBytes());
fos.flush();
fos.close();
Toast.makeText(MainActivity.this, "成功", 1).show();
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
private boolean MyRead() {
try {
FileInputStream fis = openFileInput("data");
byte buff[] = new byte[1024];
StringBuffer sb = new StringBuffer();
int hasread = 0;
while ((hasread = fis.read(buff)) != -1) {
sb.append(new String(buff));
}
fis.close();
show.setText(sb.toString());
Toast.makeText(MainActivity.this, sb.toString(), 1).show();
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText) findViewById(R.id.edittext);
saveButton = (Button) findViewById(R.id.save);
readButton = (Button) findViewById(R.id.red);
show = (TextView) findViewById(R.id.show);
saveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MyWrite();
}
});
readButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MyRead();
}
});
}}
/* 取得内存文件空间大小及可用大小 */
@SuppressLint("NewApi") private String getStorgeFileSize(String path){
String fileSizeDesc = null;
StatFs statFs = new StatFs(path); //获得磁盘状态的对象
long blockSizeLong = statFs.getBlockSizeLong(); //获得磁盘一个扇区的大小
long blockCountLong = statFs.getBlockCountLong(); //获得磁盘空间总的扇区数
long availableBlocksLong = statFs.getAvailableBlocksLong(); //获得磁盘空间总的可用扇区数
fileSizeDesc = "总内存:" + Formatter.formatFileSize(MainActivity.this, blockSizeLong*blockCountLong)
+ "; 可用内存:" + Formatter.formatFileSize(MainActivity.this, blockSizeLong*availableBlocksLong);
return fileSizeDesc;
}