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, "创建文件完成");
    }

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

文件讲解:

Android中的文件权限操作

时间: 2024-12-23 01:03:50

Android中的文件权限操作的相关文章

Android中的文件读写全面总结

转载请注明出处:http://blog.csdn.net/bettarwang/article/details/41625187 在深入分析Java中的I/O类的特征及适用场合 一文中,我详细介绍了Java中的I/O,但是,如果以为Android中的I/O与Java中一样,那就大错特错了.实际上,它们有一定的相同之外,但更多的是区别,因为Android系统中的文件存放位置不同,读取方式也不一样.下面将详细介绍Android中的文件读写: 一.资源文件的读取,不需要在Manifest文件中添加权限

Android中的文件读写总结

在Android中,文件主要分为两大类,内部存储和外部存储 内部存储的文件是程序私有的,分为普通文件和Cache文件 外部文件也可以是私有的,也可以是共有的,这要根据文件的目录位置来决定 共有文件可以用JAVA的文件处理方法来处理,但是内部文件必须用openfileinput或者openfileoutput来进行打开和关闭 在对SD卡上的文件进行操作之前需要先检查SD卡的状态(是否可读写,可访问等)

iOS中对文件的操作

转自:http://marshal.easymorse.com/archives/3340 iOS中对文件的操作 因为应用是在沙箱(sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件: Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除 Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除 在Do

在android中读写文件

在android中读写文件 android中只有一个盘,正斜杠/代表根目录. 我们常见的SDK的位置为:/mnt/sdcard 两种最常见的数据存储方式: 一.内存 二.本地 1.手机内部存储 2.外部存储设备(SD卡) 在SD卡中读数据是不需要权限的,但是在SD卡中写数据是要权限的: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 读写文件的方式就是用的Java的文件

【Android开发】 文件读写操作——总结

在android中的文件放在不同位置,它们的读取方式也有一些不同. 本文对android中对资源文件的读取.数据区文件的读取.SD卡文件的读取及RandomAccessFile的方式和方法进行了整理.供参考. 一.资源文件的读取: 1) 从resource的raw中读取文件数据: 1 String res = ""; 2 try{ 3 4 //得到资源中的Raw数据流 5 InputStream in = getResources().openRawResource(R.raw.tes

深入理解Linux中的文件权限

Linux中文件权限 Linux中每个文件都有一个特定的拥有者(一般是创建它的用户)和所属用户组,这是它的固有属性.文件可以利用这两个固有属性来规定它的拥有者或者是所属用户组内的用户是否拥有对它的访问权利,即读.写和执行的权利.此外为了提高适应性,文件还规定了其他不相关的人等的访问权限,也就是第三个固有属性.这三个固有属性和三个权利合起来,就构成了文件针对系统中所有用户的访问控制,也就构成了Linux中的文件权限体系. 1.1 使用ls命令的-l选项查看root家目录,结果如下 [[email 

android中获取root权限的方法以及原理(转)

一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有掌控手机系统的权限,比如删除一些system/app下面的无用软件,更换开关机铃声和动画,拦截状态栏弹出的广告等. 2. Root的原理介绍 谷歌的android系统管理员用户就叫做root,该帐户拥有整个系统至高无上的权利,它可以访问和修改你手机几乎所有的文件,只有root才具备最高级别的管理权限

Android中的文件存储

另见Android中的文件存储 一.前言 文件存储时Android中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中的,因此它比较适合用于存储一些简单的文本数据或二进制数据. 二.将数据存储到文件中 Context类中提供了一个openFileOutput()方法,可以用于将数据存储到指定的文件中. 可以看到,此方法接收两个参数,第一个即是文件的名字,这里不可以包含文件路径,所有的文件都是默认存储到/data/data//files/目录下的.

Android中SQLite事务的操作

1.创建一个数据库帮助类. package com.wzw.sqllitedemo.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.