小编典典

如何将sharedpreferences文件从内部存储传输到外部存储?

java

如何复制sharedpreferences到外部存储保持xml format,以便以后可以共享首选项。

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

真的很想知道是否存在一种简单而明智的方式来传递`sharedpreferences。


阅读 418

收藏
2020-11-26

共1个答案

小编典典

使用此代码,

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();
}

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

2020-11-26