将属性文件保存到android应用程序

将属性文件保存到android应用程序,android,properties,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 = c

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

提前感谢…

您正在尝试编写.apk的文件部分。您无法在运行时从应用程序的apk更新任何内容


阅读是好的,这就是为什么你没有任何问题。如果您想保存一些首选项,可能需要检查以下内容:

我已经阅读了Azertii的建议,但我认为有一种更简单的方法来管理键值对

但是,我使用了SharedReferences

首先,我在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>
我认为:
我不知道我写的是不是正确的方法,但我认为它不是一个很好的Android架构来管理属性字段,它是java传统属性和管理用户界面的方法的结合……为什么我必须声明我的属性CheckBoxPreference???。它只是一个属性。

试试这个
pro.load(您的_CLASS_NAME.CLASS.getResourceAsStream(“config.properties”);
或者如果您在资产文件夹中有文件,则
pro.load(您的_CLASS_NAME.CLASS.getResourceAsStream(“/assets/config.properties”));
您使用的首选项屏幕用于显示带有首选项的活动,而不是用于存储数据。如果您要存储某些具有预定义值的值,可以先使用原始帖子中的方法加载这些值,而不是使用SharedReferences保存这些值。提供这些默认值的另一个选项可能是将它们作为de属性未定义时的错误值,如getBoolean代码。在这些情况下,您不需要PreferenceScreen,也不需要它。
//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();