转自https://www.cnblogs.com/wuyudong/p/5552833.html,感谢作者的无私分享。
Linux文件的访问权限
* 在Android中,每一个应用是一个独立的用户
* drwxrwxrwx
* 第1位:d表示文件夹,-表示文件
* 第2-4位:rwx,表示这个文件的拥有者(创建这个文件的应用)用户对该文件的权限
* r:读
* w:写
* x:执行
* 第5-7位:rwx,表示跟文件拥有者用户同组的用户对该文件的权限
* 第8-10位:rwx,表示其他用户组的用户对该文件的权限
openFileOutput的四种模式
* MODE_PRIVATE:-rw-rw----
* MODE_APPEND:-rw-rw----
* MODE_WORLD_WRITEABLE:-rw-rw--w-
* MODE_WORLD_READABLE:-rw-rw-r--
Linux 下的 文件权限 :所以 在android 文件夹 的权限是 源于 linux 操作系统
下面四种创建带有权限的方法已经过时,谷歌不推荐使用,而是引入了contentProvider。
创建一个私有文件,每个应用程序都一个私有的文件夹,/data/data/,私有的文件只有本应用才能访问,其它程序不能访问。
public void click1(View v) {
//data/data/com.wuyudong.permission.files
try {
FileOutputStream fos = openFileOutput("info1.txt", MODE_PRIVATE);
fos.write("私有模式".getBytes());
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
或者
public void getPrivateFile(){
OutputStream out= null;
try {
File file = new File(this.getFilesDir(), "private.txt");
out = new FileOutputStream(file);
out.write("private".getBytes());
Toast.makeText(this,"写入私有文件成功",Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(this,"写入私有文件失败",Toast.LENGTH_SHORT).show();
e.printStackTrace();
} finally {
if(out!=null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
创建一个只读的文件,其他的应用可以去读,但是不能去写。
//创建一个只读文件:其他的应用可以去读,但是不能去写
public void getReadOnlyFile(){
FileOutputStream fos = null;
try {
fos = openFileOutput("readonly.txt", Context.MODE_WORLD_READABLE);
fos.write("readonly".getBytes());
Toast.makeText(this,"写入只读文件成功",Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(this,"写入只读文件失败",Toast.LENGTH_SHORT).show();
e.printStackTrace();
} finally {
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
创建一个只可写的文件,其他的应用只可以去写。
//创建一个其它应用只可写文件
public void getWriteOnlyFile(){
FileOutputStream fos = null;
try {
fos = openFileOutput("writeonly.txt", Context.MODE_WORLD_WRITEABLE);
fos.write("writeonly".getBytes());
Toast.makeText(this,"写入只写文件成功",Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(this,"写入只写文件失败",Toast.LENGTH_SHORT).show();
e.printStackTrace();
} finally {
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
创建一个公共的文件,其它应用既可以读也可以写。
//创建一个公共文件文件,其它应用可以读,也可以写
public void getPublicFile(){
FileOutputStream fos = null;
try {
fos = openFileOutput("public.txt", Context.MODE_WORLD_WRITEABLE);
fos.write("public".getBytes());
Toast.makeText(this,"写入public文件成功",Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(this,"写入public文件失败",Toast.LENGTH_SHORT).show();
e.printStackTrace();
} finally {
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}