use*_*055 42 java android bytearray sharedpreferences
所以我有一个byte [] array我在我的Android应用程序中创建的.我想使用Android的SharedPreferences存储它,并在我启动应用程序时再次检索它.我怎样才能做到这一点 ?
Dan*_*dau 98
您可以使用android.util.Base64在SharedPreferences中保存字节数组.
保存:
String saveThis = Base64.encodeToString(array, Base64.DEFAULT);
Run Code Online (Sandbox Code Playgroud)
装载:
byte[] array = Base64.decode(stringFromSharedPrefs, Base64.DEFAULT);
Run Code Online (Sandbox Code Playgroud)
Fra*_*cis 21
您可以尝试保存它有String:
Storring数组:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("myByteArray", Arrays.toString(array));
Run Code Online (Sandbox Code Playgroud)
检索数组:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String stringArray = settings.getString("myByteArray", null);
if (stringArray != null) {
String[] split = stringArray.substring(1, stringArray.length()-1).split(", ");
byte[] array = new byte[split.length];
for (int i = 0; i < split.length; i++) {
array[i] = Byte.parseByte(split[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 16
当您将数据转换为Base64字符串时,实际上会扩大数据的大小.
Base64编码的二进制数据的最终大小等于原始数据大小的1.37倍+ 814字节(对于标题).
使用Charsets.ISO_8859_1在SharedPreferences中保存byte []更快,内存效率更高
private static final String PREF_NAME = "SharedPreferences_Name";
private static final String DATA_NAME = "BytesData_Name";
public static byte[] getBytes(Context ctx) {
SharedPreferences prefs = ctx.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
String str = prefs.getString(DATA_NAME, null);
if (str != null) {
return str.getBytes(Charsets.ISO_8859_1);
}
return null;
}
public static void setBytes(Context ctx, byte[] bytes) {
SharedPreferences prefs = ctx.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor e = prefs.edit();
e.putString(DATA_NAME, new String(bytes, Charsets.ISO_8859_1));
e.commit();
}
Run Code Online (Sandbox Code Playgroud)
提示:如果你想节省更多的空间(如果保存巨大的字节[])压缩字节[],然后再将其转换为任何格式(ISO或Base64)
| 归档时间: |
|
| 查看次数: |
18995 次 |
| 最近记录: |