zoukankan      html  css  js  c++  java
  • 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系统是基于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


  • 相关阅读:
    状态压缩dp未吃透の笔记
    洛谷blog传送门qwq
    线段树学习总结(Do not be the cheater)
    第三届NOI Online普及组线上比赛赛后总结
    第三届NOI Online入门组第三题 手表(watch)题解
    P1162 填涂颜色 题解(勿抄袭)
    4980:拯救行动 题解
    P1433 吃奶酪 题解(勿抄袭)
    Mysql-多表数据记录查询
    java-多线程
  • 原文地址:https://www.cnblogs.com/riskyer/p/3246859.html
Copyright © 2011-2022 走看看