`
xp9802
  • 浏览: 1211070 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SharedPreferences读写模式

阅读更多

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

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。使用该模式创建的文件也只能被应用本身访问。

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

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

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

如果希望文件被其他应用读和写,可以传入: 

openFileOutput("itcast.txt",Context.MODE_WORLD_READABLE +Context.MODE_WORLD_WRITEABLE);

 

android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/<package name>/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有这样其他程序才能正确访问。

 

打开其他应用的文件(如果没有权限会提示:Permission denied):

String path = "/data/data/cn.itcast.files/files/itcast.txt";

File file = new File(path);

ByteArrayOutputStream outStream = newByteArrayOutputStream();

FileInputStream inStream = newFileInputStream(file);

byte[] buffer = new byte[1024];

int len = 0;

while ((len = inStream.read(buffer)) != -1) {

    outStream.write(buffer,0, len);

}

byte[] data = outStream.toByteArray();

outStream.close();

inStream.close();

String content = new String(data);

 

向其他应用的文件写入数据(如果没有权限会提示:Permissiondenied):

String path ="/data/data/cn.itcast.files/files/writable.txt";

File file = new File(path);

FileOutputStream outStream = newFileOutputStream(file);

outStream.write("itcast".getBytes());

outStream.close();

 

如果希望将内容追加到Read+Write的文件末尾,不是采用操作模式,而是:

FileOutputStream outStream = newFileOutputStream(file, true);

 

在视图File Explorer中可以看到文件的模式,例如:

 

 

以itcast.txt的属性为例:

- r w - r w - - - -

1 2 3 4 5 6 7 8 9 10

1:-代表文件,d代表目录

2,3:r w 代表可被当前应用读/写

4:是否可被运行,-否

5,6,7:同一组的应用是否可以对该文件进行读/写/运行

8,9,10:其他应用是否可以读/写/运行

 

Activity还提供了getCacheDir()和getFilesDir()方法:

getCacheDir()方法用于获取/data/data/<packagename>/cache目录

getFilesDir()方法用于获取/data/data/<packagename>/files目录

分享到:
评论

相关推荐

    读写SharedPreferences中的数据

    在这里,"MyPreferences"是SharedPreferences文件的名称,而`Context.MODE_PRIVATE`是访问模式,表示只有当前应用可以访问这个文件。 接着,我们可以使用`SharedPreferences.Editor`来编辑并提交更改。例如,要保存...

    Android 使用SharedPreferences实现数据的读写

    本文将详细介绍如何在Android中使用SharedPreferences进行数据的读写操作。 一、SharedPreferences概述 SharedPreferences是一个接口,提供了存储和检索简单键值对(如布尔值、整数、浮点数、字符串和字符串集)的...

    android开发基础教程—SharedPreferences读写

    这里的`"myxml"`是SharedPreferences的文件名,`Context.MODE_PRIVATE`表示只有当前应用能访问该文件,这是最常见的模式。 接下来,通过`SharedPreferences`对象获取一个`Editor`实例,它是用于修改...

    SharedPreferences

    通常通过`getSharedPreferences()`方法从`Context`对象中获取,需要提供一个文件名和操作模式(例如,MODE_PRIVATE是默认模式,表示只允许当前应用读写)。 2. **编辑SharedPreferences**: 使用`...

    sharedpreferences

    - 使用`getSharedPreferences()`方法,通常在`Activity`或`Fragment`中使用,需要传入首选项的名称和操作模式。 ``` SharedPreferences preferences = getSharedPreferences("MyPreferences", Context.MODE_...

    SharedPreferences解析

    三、SharedPreferences的模式 - MODE_PRIVATE:默认模式,只有创建它的应用能访问。 - MODE_WORLD_READABLE:所有应用都能读,但只能创建它的应用写。 - MODE_WORLD_WRITEABLE:所有应用都能读写,但已被弃用,因为...

    SharedPreferences基本使用

    - 多线程问题:由于SharedPreferences的读写操作不是线程安全的,如果在多线程环境下使用,需注意同步控制。 在Android开发中,熟练掌握SharedPreferences的使用对于实现应用的个性化设置和状态保存至关重要。合理...

    android SharedPreferences小例子

    这可以通过Context的getSharedPreferences()方法实现,传入一个文件名(默认的文件名为“ preferences”)和一个模式(通常是MODE_PRIVATE,表示仅本应用可读写)。例如: ```java SharedPreferences ...

    SharedPreferences数据存储和读取实例

    - 获取SharedPreferences对象:通常通过`getSharedPreferences()`方法,传入一个唯一的名称(用于区分不同的偏好设置)和模式(MODE_PRIVATE表示只允许当前应用访问,其他模式用于多应用共享)。 - 创建编辑器:...

    SharedPreferences 保存用户设置

    在Android中,我们可以通过以下步骤来读写SharedPreferences: 1. 获取SharedPreferences对象:通常在Activity或Fragment中,我们可以调用`getPreferences()`方法,传入MODE_PRIVATE参数来获取一个默认的...

    SharedPreferences基本介绍

    4. **同步机制**:SharedPreferences提供了同步的读写操作,确保了多线程环境下的数据一致性。 SharedPreferences的使用主要包括以下步骤: 1. **获取SharedPreferences对象**:通常在Activity或Fragment中,通过`...

    android的SharedPreferences用法举例源代码

    - `getSharedPreferences(String name, int mode)`:通过传入文件名和访问模式来获取,例如`getSharedPreferences("my_prefs", Context.MODE_PRIVATE)`,其中"my_prefs"是文件名,`Context.MODE_PRIVATE`表示私有...

    SharedPreferences工具类(2种)

    这样,我们就可以在任何地方通过`SharedPreferencesUtil`类方便地读写SharedPreferences了。 ### 方法二:单例模式 1. 使用单例模式创建`SharedPreferencesUtil`类: ```java public class SharedPreferencesUtil...

    android的SharedPreferences详解

    因为SharedPreferences是线程安全的,所以不需要担心多线程环境下同时读写的问题。 - **文件权限** 默认情况下,SharedPreferences文件只能被当前应用访问,如果需要其他应用也能读取,可以使用`MODE_WORLD_...

    sharedpreferences数据库例子

    在这个"sharedpreferences数据库例子"中,我们将探讨如何使用SharedPreferences进行数据的读写操作,以及它在Android应用开发中的应用场景。 首先,`SharedPreferences`并不等同于关系型数据库,如SQLite,它不支持...

    Android SharedPreferences设置初始密码

    你需要提供一个名字(通常是应用的包名)和操作模式(如MODE_PRIVATE代表应用私有,不允许其他应用读写)。 ```java SharedPreferences preferences = getSharedPreferences("MyPreferences", MODE_PRIVATE); ``` ...

    Bulldog,为了简化对sharedpreferences的读写,不要再编写这样的代码prefs.edit().putstring(“somekey”,“somestring”).apply().zip

    这种模式虽然功能完备,但在频繁的读写操作中显得较为冗余。为了解决这个问题,开源社区推出了一款名为Bulldog的库,其目的就是简化SharedPreferences的读写过程,提高代码的可读性和简洁性。 Bulldog的核心思想是...

    用SharedPreferences方式储存数据

    这个方法需要两个参数:一个表示SharedPreferences文件的名称(通常是常量),另一个是模式,例如`Context.MODE_PRIVATE`,表示只有当前应用能访问这个文件。 2. **编辑SharedPreferences**: 要修改...

    SharedPreferences偏好设置案例

    - 获取SharedPreferences对象:通常在Activity或Fragment中,通过`getSharedPreferences()`方法获取,需要传入一个文件名(作为SharedPreferences的唯一标识)和操作模式(如MODE_PRIVATE)。 - 创建Editor对象:...

Global site tag (gtag.js) - Google Analytics