_038_Android_Android 文件访问权限的四种模式

转自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();
                }
            }
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值