有没有办法将SharedPreferences存储到SD卡?

时间:2017-04-09 21:45:45

标签: android sharedpreferences android-sdcard

我已经编写了一个具有多种硬编码设置的应用,例如fontSize或targetDirectory。我希望能够不经常更改这些类型的设置。

SharedPreferences似乎是一种方法,但我想分享这个应用程序和设置,而我的手机还没有扎根。

我的应用程序是个人工具,没有用户界面。它打开,做它的工作,然后关闭。我可以创建相当于Windows .ini文件并读/写它,但这看起来很笨重。将SharePreferences文件放在我可以到达的SD卡上,而不是设备内存,我无法在那里看起来像是可行的。

我不想备份这些首选项,只能编辑它们,或将它们复制到新设备。

1 个答案:

答案 0 :(得分:2)

By default SharedPreferences files are stored in internal storage. You can make a backup of it to SD card programmatically.

    File ff = new File("/data/data/"
             + MainActivity.this.getPackageName()
             + "/shared_prefs/pref file name.xml");

    copyFile(ff.getPath().toString(), "your sdcard path/save file name.xml");



private void copyFile(String filepath, String storefilepath) {
    try {
        File f1 = new File(filepath);
        File f2 = new File(storefilepath);
        InputStream in = new FileInputStream(f1);

        OutputStream out = new FileOutputStream(f2);

        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
        System.out.println("File copied.");
    } catch (FileNotFoundException ex) {
        System.out.println(ex.getMessage());
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
}

You may replace it back when first start and backup it when application closed.

References: here