保存属性文件Android应用程序

时间:2012-03-22 17:11:54

标签: android properties

我在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)

提前感谢...

2 个答案:

答案 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