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中的文件权限操作的更多相关文章
- android中的文件(图片)上传
android中的文件(图片)上传其实没什么复杂的,主要是对 multipart/form-data 协议要有所了解. 关于 multipart/form-data 协议,在 RFC文档中有详细的描述 ...
- android中获取root权限的方法以及原理(转)
一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有 ...
- Linux学习之CentOS(四)----Linux文件属性、所有者、群组、其他组及文件权限操作简要总结
Linux文件属性.所有者.群组.其他组及文件权限操作简要总结 首先介绍一个重要的知识点:文件属性控制权限 [root@www ~]# ls -al total 156 drwxr-x--- 4 ro ...
- Android中的文件读写总结
在Android中,文件主要分为两大类,内部存储和外部存储 内部存储的文件是程序私有的,分为普通文件和Cache文件 外部文件也可以是私有的,也可以是共有的,这要根据文件的目录位置来决定 共有文件可以 ...
- 在android中读写文件
在android中读写文件 android中只有一个盘,正斜杠/代表根目录. 我们常见的SDK的位置为:/mnt/sdcard 两种最常见的数据存储方式: 一.内存 二.本地 1.手机内部存储 2.外 ...
- linux中的文件权限chmod
linux中的文件权限chmod 还是GPU集群那点事儿,集群之间磁盘互相挂载,普通用户也可以操作/cu02_nfs./cu04_nfs文件夹,这就牵扯到权限的问题,去google发现所谓的777 ...
- android中解析文件的三种方式
android中解析文件的三种方式 好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...
- Android中获取文件路径的方法总结及对照
最近在写文件存贮,Android中获取文件路径的方法比较多,所以自己也很混乱.找了好几篇博客,发现了以下的路径归纳,记录一下,以备不时之需 Environment.getDataDirectory() ...
- android中的文件操作详解以及内部存储和外部存储(转载)
原文链接:http://m.blog.csdn.net/article/details?id=17725989 摘要 其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安 ...
随机推荐
- linux下rm命令修改,增加回收站功能【笔记】
一个脚本,linux的用户根目录下.bashrc最后加入如下代码,可以修改rm命令,让人们rm时候不再会全部删除,而是会加入到回收站里,以下是根据别人的资料参考修改的,不是原创 加入后,需要sourc ...
- Linux内存管理原理【转】
转自:http://www.cnblogs.com/zhaoyl/p/3695517.html 本文以32位机器为准,串讲一些内存管理的知识点. 1. 虚拟地址.物理地址.逻辑地址.线性地址 虚拟地址 ...
- html5 教程网站
html5 MDN Canvas tutorial Canvas教程 canvas: 阮一峰 在那山的那边海的那边有一群程序猿 使用 HTML5 canvas 绘制精美的图形 HTML5定稿了,为什么 ...
- Java 使用 Redis | 菜鸟教程
入门教程: http://www.runoob.com/redis/redis-java.html 中文手册: http://redis.readthedocs.io/en/2.4/index.htm ...
- mime类型表
types { text/html html htm shtml; text/css ...
- 微信支付 APP 支付方式的服务器端处理程序
对于微信的APP的支付,客户服务说只能通过微信开放平台申请.后来在公众帐号确实发现了证据: 微信支付在申请的时候就比较严(麻烦),对服务类的一些支付,本来商品就是虚拟的,所以需要将商品描述的比较详细 ...
- PowerShell调用jira rest api实现对个人提交bug数的统计
通过PowerShell的invoke-webrequest和net.client联合实现个人指定项目jira提交数的统计,其中涉及到了JSON对象的提交,代码如下: $content = @{use ...
- 2017年1月7日 星期六 --出埃及记 Exodus 21:33
2017年1月7日 星期六 --出埃及记 Exodus 21:33 "If a man uncovers a pit or digs one and fails to cover it an ...
- ContentProvider官方教程(7)3种访问形式:批处理、异步访问、intent间接访问(临时URI权限)
Alternative Forms of Provider Access Three alternative forms of provider access are important in app ...
- vim基本使用
i 进入插入状态 esc 退出插入状态 x 删除一个字符 dd 删除一行,并拷贝 yy 拷贝 p 粘贴 u 撤销 ctrl+r 重做 :w 保存 :q 退出 :q! → 退出不保存