一次编写整个Android shared_preferences.xml

时间:2014-03-03 09:38:01

标签: android sharedpreferences

是否可以一次编写一个完整的shared_preferences.xml?

我想实现一种设置导入/导出,所以我需要读取和写入整个文件而不会丢失xml标签。

读取文件很简单,但是当我写入我的值(使用PrintWriter)时,存储在内存中的旧值会在几秒钟后覆盖它们。

如果不使用首选项编辑器编写单个值,我该怎么做才能防止这种情况。

1 个答案:

答案 0 :(得分:1)

现在我从一个像Android自己的preferences.xml这样的文件中读取它,并在我自己的函数中连续写入它:

public static void preferencesImport(String PreferenceFilepath) {
    preferencesImportPreferenceFilepath = PreferenceFilepath;
    try {
        // Parsing
        // see http://theopentutorials.com/tutorials/android/xml/android-simple-xml-dom-parser/
        XMLParserHelper parser = new XMLParserHelper(); // reference to described XMLDOMParser helper class
        BufferedInputStream stream;
        try {
            stream = new BufferedInputStream(new FileInputStream(preferencesImportPreferenceFilepath));
            org.w3c.dom.Document doc = parser.getDocument(stream);

            // string value
            NodeList nodeListString = doc.getElementsByTagName("string");
            for (int i = 0; i < nodeListString.getLength(); i++) {
                Element eString = (Element) nodeListString.item(i);
                Pref.setString(eString.getAttribute("name"), eString.getTextContent()); // Own getter/setter -> use Android's preference manager instead in similar way
            }

            // repeat code above for boolean, long, int, float values

            stream.close();
        } catch (IOException e1) {
            // output IOException
        } catch (Throwable t1) {
            // output Throwable1
        }
        writer.close();
    } catch (Throwable t2) {
        // output Throwable2
    }
}