Android的读写文件权限

设置文件生成的权限:

public static boolean saveInfo(
Context context, String userName, String userPass, int mode){ try {
FileOutputStream fos;
switch (mode) {
case 0:
fos = context.openFileOutput(
"private.txt", Context.MODE_PRIVATE);
fos.write((userName+"##"+userPass).getBytes());
fos.close();
break;
case 1:
fos = context.openFileOutput(
"readable.txt", Context.MODE_WORLD_READABLE);
fos.write((userName+"##"+userPass).getBytes());
fos.close();
break;
case 2:
fos = context.openFileOutput(
"writeable.txt", Context.MODE_WORLD_WRITEABLE);
fos.write((userName+"##"+userPass).getBytes());
fos.close();
break;
case 3:
fos = context.openFileOutput(
"public.txt", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
fos.write((userName+"##"+userPass).getBytes());
fos.close();
break;
default:
break;
} return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}

Context.MODE_PRIVATE私有的文件,只可以程序本身读取和修改

Context.MODE_WORLD_READABLE可读文件,外部程序可以阅读不可以修改

Context.MODE_WORLD_WRITEABLE可写文件,外部程序可以修改不可以读取

Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE外部程序可读可写

下面是读取文件和写入文件的程序代码:

读取文件:

public void readInfo(View view){
File file = new File("/data/data/com.aaron.login/files/public.txt");
FileInputStream fis;
try {
fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String result = br.readLine();
Toast.makeText(MainActivity.this,
result,
Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(MainActivity.this,
"读取文件失败",
Toast.LENGTH_LONG).show();
}
}

写入文件:

public void writeInfo(View view){
File file = new File("/data/data/com.aaron.login/files/public.txt");
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
fos.write("hahaha".getBytes());
fos.close();
Toast.makeText(MainActivity.this,
"写入文件成功",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(MainActivity.this,
"写入文件失败",
Toast.LENGTH_LONG).show();
} }

在DDMS的File Explorer中查看文件的permission:

Android的读写文件权限

android系统是基于linux的系统的,文件权限也是linux系统的形式:

Linux 系统下的文件权限:

位置0代表文件,d代表目录

一般情况下,android下的每一个应用程序都是一个独立的用户,对应一个独立的组

位置1-3当前用户r可读,w可写,x可执行

位置4-6当前用户所在的组 r可读,w可写,x可执行

位置7-9其它用户的权限

权限对应的十进制:

- --- --- ---0 000

- rw- --- ---0 600

- rw- rw- rw-0 666

在android的adb中修改文件的权限:

root@android:/data/data/com.aaron.login/files # ls -l
ls -l
-rw-rw---- u0_a46   u0_a46         13 2013-08-08 08:01 private.txt
-rw-rw-rw- u0_a46   u0_a46          6 2013-08-08 09:04 public.txt
-rw-rw-r-- u0_a46   u0_a46         13 2013-08-08 08:01 readable.txt
-rw-rw--w- u0_a46   u0_a46         13 2013-08-08 08:01 writeable.txt
root@android:/data/data/com.aaron.login/files # chmod 0000 private.txt
chmod 0000 private.txt
root@android:/data/data/com.aaron.login/files # ls -l
ls -l
---------- u0_a46   u0_a46         13 2013-08-08 08:01 private.txt
-rw-rw-rw- u0_a46   u0_a46          6 2013-08-08 09:04 public.txt
-rw-rw-r-- u0_a46   u0_a46         13 2013-08-08 08:01 readable.txt
-rw-rw--w- u0_a46   u0_a46         13 2013-08-08 08:01 writeable.txt

chmod:change mode

上一篇:Unity3D Optimizing Graphics Performance for iOS


下一篇:每天一道Java题[3]