我在android中存储属性文件时遇到问题,这是代码:
Properties prop = new Properties();
prop.load(context.getResources().openRawResource(R.raw.config));
Utils.log(context,"db.version =>"+ prop.get("db.version"));
prop.setProperty("db.version", "2");
String fileName = context.getResources().getString(R.raw.config);
FileOutputStream fos = new FileOutputStream(fileName);
prop.store(fos, "");
当我尝试加载(和打印)没有问题,但当我尝试保存我的新集时,我收到FileNotFoundException
这里LogCat:
03-22 18:05:03.262: INFO(11536): db.version =>1
03-22 18:05:03.262: ERROR(11536): java.io.FileNotFoundException: /res/raw/config.properties (No such file or directory)
提前感谢...
答案 0 :(得分:2)
我已经阅读了azertiti建议我的内容,但我认为有一种更简单的方法可以管理一个键值对
但是,我使用了SharedPreferences
首先,我在res / xml / conf.xml
中创建了一个属性xml文件<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="My preference"
android:key="preference">
<CheckBoxPreference
android:key="pwd_request"
android:defaultValue="true"
/>
</PreferenceCategory>
</PreferenceScreen>
之后,我调用(在activity类中)方法来读/写属性值:
//read...
PreferenceManager.setDefaultValues(this, R.xml.conf, true);
userProps = PreferenceManager.getDefaultSharedPreferences(this);
Utils.log(this, userProps.getBoolean("pwd_request", false));
//...and write
edit.putBoolean("pwd_request", false);
edit.commit();
在我看来: 我不知道我写的是否是正确的方法,但我认为管理属性字段不是一个很好的Android架构,它是java传统属性和管理用户界面的方法的合并...... 。为什么我必须声明我的属性CheckBoxPreference ??它只是一个属性。
答案 1 :(得分:0)
您正在尝试编写.apk的文件部分。您无法在运行时从应用程序的apk更新任何内容。
阅读很好,这就是你在那里没有任何问题的原因。如果您想保存某些偏好设置,可能需要查看以下内容:http://developer.android.com/guide/topics/data/data-storage.html#pref