安卓开发:文件权限

简单做一个界面,生成四个按钮按四种权限新建文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click1"
        android:text="私有文件" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click2"
        android:text="可追加文件" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click3"
        android:text="可读文件" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click4"
        android:text="可写文件" />

</LinearLayout>

效果图:

 

点击事件:

package com.dreamtech.file;

import java.io.FileOutputStream;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    // 生成一个私有文件
    public void click1(View v) {
        try {
            FileOutputStream fos = openFileOutput("private.txt", MODE_PRIVATE);
            fos.write("private".getBytes());
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 生成一个可追加的文件
    public void click2(View v) {
        try {
            FileOutputStream fos = openFileOutput("append.txt", MODE_APPEND);
            fos.write("append".getBytes());
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 生成一个只读的文件
    public void click3(View v) {
        try {
            FileOutputStream fos = openFileOutput("read.txt",
                    MODE_WORLD_READABLE);
            fos.write("read".getBytes());
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 生成一个可写的文件
    public void click4(View v) {
        try {
            FileOutputStream fos = openFileOutput("write.txt",
                    MODE_WORLD_WRITEABLE);
            fos.write("write".getBytes());
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

点击完四个按钮:

 

这里最后一列就是Linux中的文件权限:

 

Linux中用10位表示文件权限:

从左往右依次:

第一位表示文件的类型

2-4位表示当前用户

5-7位表示当前用户所在组

最后三位表示其他用户

 

可以看出:四个文件对当前用户和当前用户组都是可读可写,其他用户的权限不一致

(这里本质是二进制:1表示r或者w,0表示-)

 

另外:可追加和其他权限区别:追加不清除以前的内容,在后边追加

 

 

那么可以修改文件权限吗?

可以,需要Linux指令

打开adb shell

cd到文件目录

chmod 777 private.txt

777即可修改为可读可写可执行

开发中通常不会修改文件权限

posted @ 2018-04-17 10:36 一清 阅读(...) 评论(...) 编辑 收藏