首页 > 代码库 > Android中的文件权限操作

Android中的文件权限操作

默认本工程创建的文件本工程对其有读写权限。

我们可以通过context.openFileOutput("文件名", 模式);

 

我们可以创建私有, 共有, 只读, 只写文件, 默认的文私有文件。

如果别的Android工程访问本工程的文件的话就会受限制, android的内核是linux, 所以他的文件管理和linux中的文件时一样的。

 

创建文件代码:

/**     * 创建各种文件     * @throws IOException      *      */    @SuppressLint({ "WorldWriteableFiles", "WorldReadableFiles" })    @SuppressWarnings("resource")    private void createFile() throws IOException {        Log.i(TAG, "开始创建文件");                FileOutputStream fos;                //创建私有文件         fos = this.openFileOutput("private.txt", Context.MODE_PRIVATE);        fos.write("private".getBytes());        fos.close();                //创建公有文件        fos = this.openFileOutput("public.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);        fos.write("public".getBytes());        fos.close();                //创建默认文件        File file = new File(this.getFilesDir(), "default.txt");        fos = new FileOutputStream(file);        fos.write("default".getBytes());        fos.close();                //创建只读文件        fos = this.openFileOutput("readable.txt", Context.MODE_WORLD_READABLE);        fos.write("readable".getBytes());        fos.close();                //创建只写文件        fos = this.openFileOutput("writeable.txt", Context.MODE_WORLD_WRITEABLE);        fos.write("writeable".getBytes());        fos.close();                Toast.makeText(this, "文件创建成功", Toast.LENGTH_LONG).show();                Log.i(TAG, "创建文件完成");    }
View Code

 

 

othera Android工程访问 filespower工程所创建的文件

 

package com.example.other;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import android.annotation.SuppressLint;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends ActionBarActivity implements OnClickListener{        private String TAG = "MainActivity";        /** 读写私有文件 */    private Button btnWritePrivate, btnReadPrivate;        /** 读写共有文件 */    private Button btnWritePublic, btnReadPublic ;        /** 读写默认文件 */    private Button btnWriteDefalut, btnReadDefault;        /** 读写只读文件 */    private Button btnWriteReadable, btnReadReadable;        /** 读写只写文件 */    private Button btnWriteWriteable, btnReadWriteable;                @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                //组件获取        btnWritePrivate = (Button)findViewById(R.id.btn_writePrivate);        btnReadPrivate = (Button)findViewById(R.id.btn_readPrivate);                btnWritePublic = (Button)findViewById(R.id.btn_writePublic);        btnReadPublic = (Button)findViewById(R.id.btn_readPublic);                btnWriteDefalut = (Button)findViewById(R.id.btn_writeDefault);        btnReadDefault = (Button)findViewById(R.id.btn_readDefault);                btnWriteReadable = (Button)findViewById(R.id.btn_writeReadable);        btnReadReadable = (Button)findViewById(R.id.btn_readReadable);                btnWriteWriteable = (Button)findViewById(R.id.btn_writeWriteable);        btnReadWriteable = (Button)findViewById(R.id.btn_readWriteable);                        //设置监听事件        btnWritePrivate.setOnClickListener(this);         btnReadPrivate.setOnClickListener(this);                btnWritePublic.setOnClickListener(this);        btnReadPublic.setOnClickListener(this);                btnWriteDefalut.setOnClickListener(this);        btnReadDefault.setOnClickListener(this);                btnWriteReadable.setOnClickListener(this);        btnReadReadable.setOnClickListener(this);        btnWriteWriteable.setOnClickListener(this);        btnReadWriteable.setOnClickListener(this);            }    @Override    public void onClick(View v) {        switch (v.getId()) {        case R.id.btn_readPrivate:            readFile("private.txt");            break;        case R.id.btn_readPublic:            readFile("public.txt");            break;        case R.id.btn_readDefault:            readFile("default.txt");            break;        case R.id.btn_readReadable:            readFile("readable.txt");            break;        case R.id.btn_readWriteable:            readFile("writeable.txt");            break;        case R.id.btn_writePrivate:            writeFile("private.txt");            break;        case R.id.btn_writePublic:            writeFile("public.txt");            break;        case R.id.btn_writeDefault:            writeFile("default.txt");            break;        case R.id.btn_writeReadable:            writeFile("readable.txt");            break;        case R.id.btn_writeWriteable:            writeFile("writeable.txt");            break;                    default:            break;        }            }    @SuppressLint("SdCardPath")    public void readFile(String fileName) {        Log.i(TAG, "读文件"+fileName);                File file = new File("/data/data/com.example.filepower/files/"+fileName);        try {            @SuppressWarnings("resource")            BufferedReader br = new BufferedReader(new FileReader(file));            String context = br.readLine();            Toast.makeText(this, context, Toast.LENGTH_SHORT).show();                    } catch (Exception e) {            Toast.makeText(this, "读取失败", Toast.LENGTH_SHORT).show();        }                    }        @SuppressLint("SdCardPath")    @SuppressWarnings("resource")    public void writeFile(String fileName) {        Log.i(TAG, "写文件"+fileName);        File file = new File("/data/data/com.example.filepower/files/", fileName);        try {            FileOutputStream fos = new FileOutputStream(file);            fos.write("xxx".getBytes());        } catch (Exception e) {            Toast.makeText(this, "写文件失败", Toast.LENGTH_SHORT).show();        }    }}
View Code

 

 

文件讲解: