LZ 2个问题需要纠正下1.那个是Context的常量
2.对于SharedPreferences来说,使用MODE_APPEND是没有意义的,这个标志表示文件可以追加,即可以继续向一个txt里面写东西,而MODE_PRIVATE 活着其他 会覆盖文件
所以你理解的 “都是追加”不对,因为SharedPreferences本来就可以存多个值,不存在追加问题,他是一个xml文件,不同的key存进去时是不同的item
2.对于SharedPreferences来说,使用MODE_APPEND是没有意义的,这个标志表示文件可以追加,即可以继续向一个txt里面写东西,而MODE_PRIVATE 活着其他 会覆盖文件
所以你理解的 “都是追加”不对,因为SharedPreferences本来就可以存多个值,不存在追加问题,他是一个xml文件,不同的key存进去时是不同的item
解决方案 »
- 怎样获取应用程序的主类名呢?
- android检测wifi和3g状态失败,下面是代码,求大神帮忙看下!
- 参加一个程序设计比赛,全国性的,请大家给个建议,急。。。。。。
- Build Target是2.2,为什么运行时候选1.6的仿真器也可以运行?
- android类似html的定位元素
- 寻android调用webservice的源码
- 关于android listview 的onItemClick方法
- android端如何控制同一局域网内的电脑
- app微信分享
- AndrodiSDK/tools/hprof-conv转化hprof文件ERROR: failed reading input
- gallery屏幕范围内显示3张图问题
- 关于应用ICON的尺寸问题
File creation mode: the default mode, where the created file can only be accessed by the calling application (or all applications sharing the same user ID).
public static final int MODE_APPENDAdded in API level 1
File creation mode: for use with openFileOutput(String, int), if the file already exists then write data to the end of the existing file instead of erasing it.从SDK对于这两个常量的描述来看 他们控制的功能不一样 MODE_APPEND 的功能是判断是否有该文件,如果有在后面添加,而不是擦除MODE_PRIVATE 该文件只能被创建他的应用访问(控制访问权限)功能不同
Constant Value: 32768 (0x00008000) MODE_APPEND
Constant Value: 1 (0x00000001) MODE_WORLD_READABLE
Constant Value: 2 (0x00000002) MODE_WORLD_WRITEABLE应该是最后两位决定权限!~ 如果猜测没有错 那么 append 和 private 就一样了
如果假设不成立, 就不知道了 坐等高手
不是说的很清楚么 SharedPreferences只有权限的区别 不存在追加不追加
如果只是想自己访问 就写成MODE_PRIVATE 需要让别人访问 写成world_readable 甚至是其他应用访问的话 还有multireadable什么的
MODE_APPEND主要用于存储文件时的选项
ContextImpl.java
getSharedPreferences(String name, int mode) sp = new SharedPreferencesImpl(prefsFile, mode);
SharedPreferencesImpl.java
commit()---->enqueueDiskWrite()---->writeToFile()---->setFilePermissionsFromMode()getSharedPreferences(String name, int mode) mode对应传入的是 MODE_PRIVATE 或者 MODE_APPEND在函数 setFilePermissionsFromMode 中不管传入的是MODE_PRIVATE 还是 MODE_APPEND 对perms 没有影响,传入MODE_PRIVATE 还是MODE_APPEND 最终效果是一样的,而perms决定是覆盖文件,还是在文件后面继续添加内容 static void setFilePermissionsFromMode(String name, int mode,
int extraPermissions) {
int perms = FileUtils.S_IRUSR|FileUtils.S_IWUSR
|FileUtils.S_IRGRP|FileUtils.S_IWGRP
|extraPermissions;
if ((mode&MODE_WORLD_READABLE) != 0) {
perms |= FileUtils.S_IROTH;
}
if ((mode&MODE_WORLD_WRITEABLE) != 0) {
perms |= FileUtils.S_IWOTH;
}
if (DEBUG) {
Log.i(TAG, "File " + name + ": mode=0x" + Integer.toHexString(mode)
+ ", perms=0x" + Integer.toHexString(perms));
}
FileUtils.setPermissions(name, perms, -1, -1);这人理解,可能有误,请大家指点。
}