У меня возникла серьезная проблема. Я хочу сохранить HashMap (я назову его «map» или «hm») в файл на устройстве Android, в котором работает приложение. Я хочу сохранить его на внутреннем хранилище.Как сохранить HashMap в файл и загрузить его
Я знаю, что такие вопросы были заданы как 100 раньше, и я попробовал около 25 из них, но никто из них не работал.
У меня есть 3 класса, один основной класс, который расширяет «Активность» и два других класса, один из которых называется «util». Я хотел написать два метода, чтобы сохранить и загрузить HashMap, и оба метода должны быть в классе «util». В основном классе я написал несколько методов для загрузки HashMap, поместил что-то в него и сохранил его снова.
До сих пор не сложно было решить мою проблему, но я хочу использовать методы «сохранить» и «загрузить» в других классах, кроме основного класса.
Я не знаю, как получить объект Context в других классах как основной класс, поэтому я не знаю, как вызвать метод openFileOutput()
.
В целом: Я хочу сохранить и загрузить HashMap в/из файла, который я хочу создать на внутренней памяти. Метод, который я использую, должен быть расположен в классе «util» и должен быть доступен для всех других классов, предпочитаемых статическим способом. Я пробовал много разных возможностей, но всегда получаю «FileNotFoundException». Я надеюсь, что вы можете мне помочь.
Некоторые из методов, которые я использовал:
try {
FileOutputStream fos = c.openFileOutput(s, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(hm);
oos.flush();
oos.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
В этом методе я должен использовать контекст, и я не знаю, как получить его в других классах. Я также получить «FileNotFoundException» ...
String file = The path where my file should be located (I don't know how it should be given, but "data/data/[packagename]/[file]" does not work)
try {
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(hm);
oos.flush();
oos.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Этот метод не работает, либо, я не знаю, какой я получил исключение.
И наконец: Если вы хотите мне помочь, пожалуйста, опишите, как получить каждый объект, который вы используете (ну, кроме основных вещей, таких как строки и т. Д.), И вставьте все свое решение. Мне очень жаль, если бы этот вопрос задавали раньше, я не мог его найти.
Редактировать
Я пытался использовать "this.getApplicationContext(). GetFilesDir() метод, но все еще получаю 'FileNotFoundException' ... Не знаю, что делать.
«_I на самом деле не знаю, какой я получил исключение ..._» Если вы хотите, чтобы помочь вам, это вид информации, нам нужно ... Просто запустите ваш код и скопировать/вставить стек. Это наименьшее, что вы можете сделать ... – jlordo
Какие типы содержатся в вашей «карте»? 'Hashmap'? –
nattyddubbs
Да, строки и целые числа. Иногда это тип моего класса Enum. Является ли проблема помещать объекты разных типов только в один HashMap, если вы этого не сделаете (не знаете, как это сказать) поместите вещи в эти '>'? – Enagon