1. 首先我们编写一个生成 4种 不同权限的文件的程序案例:

(1)首先是activity_main.xml文件:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" > <Button
android:onClick="click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="生成文件" /> <RadioGroup
android:id="@+id/rg_mode"
android:layout_width="wrap_content"
android:layout_height="wrap_content" > <RadioButton
android:id="@+id/rb_private"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="私有 private" /> <RadioButton
android:id="@+id/rb_readble"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全局可读 world readable" /> <RadioButton
android:id="@+id/rb_writeable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全局可写world writeable" /> <RadioButton
android:id="@+id/rb_public"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全局可读可写public" />
</RadioGroup> </RelativeLayout>

布局效果如下图:

(2)接下来是代码逻辑部分如下:MainActivity.java:

 package com.itheima.filemode;

 import java.io.FileOutputStream;

 import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioGroup; public class MainActivity extends Activity {
private RadioGroup rg_mode; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rg_mode = (RadioGroup) findViewById(R.id.rg_mode);
} /**
* 按钮的点击事件
*
* @param view
*/
public void click(View view) {
try {
int id = rg_mode.getCheckedRadioButtonId();
FileOutputStream fos = null;
switch (id) {
case R.id.rb_private:// 私有文件
fos = openFileOutput("private.txt", MODE_PRIVATE);
break;
case R.id.rb_public:// 可读可写文件
fos = openFileOutput("public.txt", MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE);
break;
case R.id.rb_readble:// 全局可读文件
fos = openFileOutput("readble.txt", MODE_WORLD_READABLE);
break;
case R.id.rb_writeable:// 全局可写文件
fos = openFileOutput("writeable.txt", MODE_WORLD_WRITEABLE);
break;
}
fos.write("dfafda".getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/<package name>/files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目录就可以看到该文件。

我们分别点击界面上不同的RadioButton,生成不同文件如下图:

2. 小结:android下文件访问的权限:

* 默认情况下所有的文件创建出来都是私有的。只有自己的应用程序可以访问里面的数据,别的应用程序是不可以访问数据的。
* 特殊情况利用api可以修改文件的权限。
      openFileOutput("文件名","文件的访问模式"); 私有 只读 只写 可读可写
* 底层是通过Linux操作系统的文件模式来实现的。

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。

MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。

Android(java)学习笔记184:生成 4种 不同权限的文件的更多相关文章

  1. Android(java)学习笔记127:生成 4种不同权限的文件

    1. 首先我们编写一个生成 4种 不同权限的文件的程序案例: (1)首先是activity_main.xml文件: <RelativeLayout xmlns:android="htt ...

  2. JAVA学习笔记-数组的三种初始化方式

      package Study; public class TestArray02 { public static void main(String[] args){//声明 int[] a; int ...

  3. Java学习笔记之I/O流(读取压缩文件以及压缩文件)

    1.读取压缩文件:ZipInputStream 借助ZipFile类的getInputStream方法得到压缩文件的指定项的内容,然后传递给InputStreamReader类的构造方法,返回给Buf ...

  4. Android自动化学习笔记:编写MonkeyRunner脚本的几种方式

    ---------------------------------------------------------------------------------------------------- ...

  5. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  6. Android 数字签名学习笔记

    Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...

  7. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  8. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  9. Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. 系统调用与API的区别

    整理自系统调用与API的区别 1.为什么用户程序不能直接访问系统内核模式提供的服务? 答:在linux中,将程序的运行空间分为内核与用户空间(内核态和用户态),在逻辑上它们之间是相互隔离的,因此用户程 ...

  2. 3D触控简介:建立数字刻度应用及快速活动栏

    苹果公司通过 iPhone 6s 和 6s Plus 引入了与手机互动的全新方式:按压手势.你也许知道,苹果智能手表和苹果笔记本电脑早已具备这一功能,只是名称略有不同,为力感触控(Force Touc ...

  3. [转贴]JAVA:RESTLET开发实例(三)基于spring的REST服务

    前面两篇文章,我们介绍了基于JAX-RS的REST服务以及Application的Rest服务.这里将介绍restlet如何整合spring框架进行开发.Spring 是一个开源框架,是为了解决企业应 ...

  4. EMMC 简要介绍

    一直想写一篇关于EMMC的文章,但是因为之前弄了很多PPT,所以一直提不起兴趣,索性直接把之前的一个介绍EMMC的PPT贴出来给大家看看,有什么问题可以直接跟帖,我会第一时间进行解答,谢谢

  5. 【Xamarin挖墙脚系列:Xamarin开发环境配置需求】

    原文:[Xamarin挖墙脚系列:Xamarin开发环境配置需求] 前言 因为操作的全是大块头,加大你们的内存,CPU网上飙.... 卤煮的机器配置  最近的版本部署包,百度云离线下载:版本:Xama ...

  6. [译]GotW #1: Variable Initialization

    原文地址:http://herbsutter.com/2013/05/09/gotw-1-solution/ 第一个问题强调的是要明白自己在写什么的重要性.下面有几行简单的代码--它们大多数之间都有区 ...

  7. android原生系统裁剪

    Andriod 4.0.4系统包 Andriod 4.1.1系统包 说明   ApplicationsProvider.apk ApplicationsProvider.apk 应用程序存储. 程序管 ...

  8. Linux修改文件时候出现崩溃,产生了一个.swap交换文件,如何修复?

    有时候在用vim打开文件时提示类似以下的信息: E325: 注意 发现交换文件 ".exportcert.cpp.swp" 所有者: liuchuanliang    日期: Th ...

  9. SIFT算法:确定特征点方向

    SIFT算法:DoG尺度空间生产  SIFT算法:KeyPoint找寻.定位与优化 SIFT算法:确定特征点方向  SIFT算法:特征描述子 目录: 1.计算邻域梯度方向和幅值 2.计算梯度方向直方图 ...

  10. Android Volley - volley StringRequest編碼問題

    有些時候這個類並不能很好的解決中文編碼問題 如果出現亂碼,就 要重寫該類的parseNetworkResponse 方法了. 繼承StringRequest,然後重寫parseNetworkRespo ...