Android中的檔案許可權操作

來源:互聯網
上載者:User

標籤:android   style   blog   http   java   color   

預設本工程建立的檔案本工程對其有讀寫權限。

我們可以通過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

 

 

檔案講解:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.