Я пытаюсь сохранить пользовательские настройки в файл, откуда я могу прочитать его позже. Но я не могу заставить его работать правильно. Я пробовал читать, но у меня все еще есть проблемы.Как сохранить HashMap в файл на Android?
Map<String, String> userSettings = new HashMap<>();
public void updateUserSettings(){
userSettings.clear();
userSettings.put("item0", item0);
userSettings.put("item1", item1);
userSettings.put("item2", item2);
userSettings.put("item3", item3);
userSettings.put("item4", item4);
userSettings.put("item5", item5);
userSettings.put("item6", item6);
userSettings.put("item7", item7);
userSettings.put("i0", Float.toString(i0));
userSettings.put("i1", Float.toString(i1));
userSettings.put("i2", Float.toString(i2));
userSettings.put("i3", Float.toString(i3));
userSettings.put("i4", Float.toString(i4));
userSettings.put("i5", Float.toString(i5));
userSettings.put("i6", Float.toString(i6));
userSettings.put("i7", Float.toString(i7));
userSettings.put("huvudMaskin", huvudMaskin);
userSettings.put("minorMaskin1", minorMaskin1);
userSettings.put("minorMaskin2", minorMaskin2);
userSettings.put("maskinTid", Float.toString(maskinTid));
writeSettings();
}
public void writeSettings() {
try
{
FileOutputStream fos = context.openFileOutput("test.ser", Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(userSettings);
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void readSetttings() {
try
{
FileInputStream fileInputStream = new FileInputStream(context.getFilesDir()+"test.ser");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Map myHashMap = (Map)objectInputStream.readObject();
userSettings = null;
userSettings = myHashMap;
}
catch(ClassNotFoundException | IOException | ClassCastException e) {
e.printStackTrace();
}
executeSettings();
}
У меня есть права на чтение и запись на приложение.
Я не получаю ничего из этого. Я проверил hashmap, и он работает по назначению. Я также пробовал много разных подходов, и единственное, что мне удалось получить, - это сохранить строки в файл .txt.
«Я ничего не получаю от этого». Это ваша проблема? Пожалуйста, будьте более конкретными, если хотите, чтобы мы поняли. – davidxxx
FileOutputStream.flush(), а затем закройте его! – Fang
@Jason Эти вещи автоматически смываются при закрытии. Это не проблема. – GhostCat