安卓(Android) 怎么将共享引用(SharedPreferences)保存到文件

2019年10月13日15:05:33安卓(Android) 怎么将共享引用(SharedPreferences)保存到文件已关闭评论 318 1714字阅读5分42秒

1.简介

安卓(Android) 怎么将共享引用(SharedPreferences)保存到文件?——请看下文。

2.示例代码

/**
 * 版权所有 编程十万个怎么办(www.tah1986.com)
 */

 
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.GZIPOutputStream;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Environment;
import android.preference.PreferenceManager;

public class Main {
  static String saveSharedPreferencesToFile(Context context) {
    try {
      File myFile = new File(GenerateFilename());
      myFile.createNewFile();
      return saveSharedPreferencesToFile(context, myFile);
    } catch (Exception e) {

      return null;
    }
  }

  static String saveSharedPreferencesToFile(Context context, File dst) {
    String res = null;
    ObjectOutputStream output = null;
    try {
      GZIPOutputStream outputGZIP = new GZIPOutputStream(new FileOutputStream(
          dst));
      output = new ObjectOutputStream(outputGZIP);
      SharedPreferences pref = PreferenceManager
          .getDefaultSharedPreferences(context);
      Map<String, Object> shallowCopy = new HashMap<String, Object>(
          pref.getAll());
      shallowCopy.remove("extendedlog");
      output.writeObject(shallowCopy); 
      res = dst.getAbsolutePath();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        if (output != null) {
          output.flush();
          output.close();
        }
      } catch (IOException ex) {
        ex.printStackTrace();
      }
    }
    return res;
  }

  static String GenerateFilename() {
    String logfile = Environment.getExternalStorageDirectory().getPath()
        + "/screenstandby" + getDateTime() + ".backup-ss";
    return logfile;
  }

  final static String getDateTime() {
    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd-hhmmss");
    return df.format(Calendar.getInstance().getTime());
  }
}

 
继续阅读
编程十万个怎么办