如何在Android中以编程方式更新“ .properties”文件中的任何值?

时间:2019-01-25 13:30:09

标签: java android

在我的应用中,我在“资产”(“ src / main / assets”)文件夹中手动创建了一个属性文件(“ MyConfig.properties”)。该文件只有一个条目,即 DeviceUuid = xyzabc ,现在我想将此值更新为 DeviceUuid = pqrstabc ,为此,我在下面的代码中写了---

public static void setProperty(String key, String value, Context context)
    {
        try
        {
            Properties properties = new Properties();
            OutputStream output = new FileOutputStream("MyConfig.properties");
            // set the properties value
            properties.setProperty(key, value);

            // save properties to project root folder
            properties.store(output, null);

            output.close();
        }
        catch (Exception ex)
        {
            Log.e(TAG, "Unable to WRITE Property "+key);
            Log.e(TAG, ""+ex);
        }
    }

但我总是会遇到例外情况-

java.io.FileNotFoundException: MyConfig.properties (Read-only file system)

我对此做了一些RND,并尝试了谷歌上其他可用的解决方案,但没有一个对我有用。

我已经编写了以下代码,以从同一属性文件中读取值,并且它工作正常---

public static String getProperty(String key, Context context)
    {
        try
        {
            Properties properties = new Properties();;
            AssetManager assetManager = context.getAssets();
            InputStream inputStream = assetManager.open("MyConfig.properties");
            properties.load(inputStream);
            return properties.getProperty(key);
        }
        catch (Exception ex)
        {
            Log.e(TAG, "Unable to READ Property "+key);
            Log.e(TAG, ""+ex);
            return null;
        }
    }

请告知我是否可以提供更多详细信息。谢谢

1 个答案:

答案 0 :(得分:0)

new FileOutputStream("MyConfig.properties");指向无效的位置。您需要提供一个指向internal storageexternal storage或也许removable storageFile对象。