java - 如何将共享首选项文件从内部存储传输到外部存储?

标签 java android xml file sharedpreferences

如何将共享首选项复制到保持xml格式的外部存储,以便以后可以共享首选项。

尝试读取sharedpreferences并将其作为string保存到文件中,创建JSON类型的string,但我需要一个 xml。想过遍历应用程序的内部存储并复制文件并将其放入外部存储中,但这可能太复杂。

只是真的想知道是否有一种简单而合理的方法来传输“共享首选项”。

最佳答案

使用此代码,

SharedPreferences preferences=this.getSharedPreferences("com.example.application", Context.MODE_PRIVATE);
Map<String,?> keys = preferences.getAll();
Properties properties = new Properties();
for(Map.Entry<String,?> entry : keys.entrySet()){
    String key = entry.getKey();
    String value = entry.getValue().toString();
    properties.setProperty(key, value);      
}
try {
    File file = new File("externalPreferences.xml");
    FileOutputStream fileOut = new FileOutputStream(file);
    properties.storeToXML(fileOut, "External Preferences");
    fileOut.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

并检索使用它,

try {
    File file = new File("externalPreferences.xml");
    FileInputStream fileInput = new FileInputStream(file);
    Properties properties = new Properties();
    properties.loadFromXML(fileInput);
    fileInput.close();

    Enumeration enuKeys = properties.keys();
    SharedPreferences.Editor editor = preferences.edit();
    while (enuKeys.hasMoreElements()) {
        String key = (String) enuKeys.nextElement();
        String value = properties.getProperty(key);
        editor.putString(key, value);
        editor.commit();
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

注意您只能使用此代码处理字符串类型首选项,

关于java - 如何将共享首选项文件从内部存储传输到外部存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27917809/

相关文章:

java - 在 Java 动画中使用线程

java - 在 Android .aar 库中重新打包 .jar-s

java - Jackson:为 Xml 和 JSON 格式配置实体

xml - PXSL 的语法突出显示?

javascript - 如何从网络 worker 内部访问对象元素数据?

java - 如何创建将安装可执行 Jar 的安装文件

java - 获取Page对象的每个页面 - Spring

java - twitter4j - 如果我使用“自始至终”限制,则不会返回任何结果

android - 我正在尝试使用 fragment 创建 BottomNavigationView,我想在主布局中使用 fragment

android - Qt qml : Custom dialog not displayed on device, 应用程序崩溃