zoukankan      html  css  js  c++  java
  • 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

    文件讲解:

  • 相关阅读:
    Java 中队列的使用
    数据挖掘十大经典算法
    数据结构之图(术语、存储结构、遍历)
    openldap---ldapsearch使用
    RDBMS 数据库补丁集补丁号码高速參考-文档 ID 1577380.1
    关于 ioctl 的 FIONREAD 參数
    Oracle 事务的開始与结束
    泛泰A880S升级官方4.4.2 binx教程
    设计模式18---设计模式之策略模式(Strategy)(行为型)
    java实现矩形区域的交和并
  • 原文地址:https://www.cnblogs.com/E-star/p/3854861.html
Copyright © 2011-2022 走看看