Android: как получить доступ к объектам, хранящимся в FileOutputStream

Я могу хранить объекты на устройстве Android, но у меня возникают проблемы с их извлечением. Данные в этих объектах задаются пользователем (например, имя строки, день недели и т. д.). Эти объекты сохраняются (их ключом является их имя), а позже в другом действии они должны быть получены. Я не могу их получить, потому что в новом действии я не знаю, как их имя определяется пользователем.

Для хранения объектов (object=person)

  FileOutputStream fStream = context.openFileOutput(name,Context.MODE_PRIVATE);
  ObjectOutputStream oStream = new ObjectOutputStream(fStream);
  oStream.writeObject(person);
  oStream.close();
  fStream.close();

Извлечение объектов (выполняется в другом классе)

  FileInputStream fStream = context.openFileInput( //where the name of the object should be, here's where I'm stuck );
  ObjectInputStream oStream = new ObjectInputStream(fStream);
  person = oStream.readObject();

Поскольку я занимаюсь новой деятельностью, я понятия не имею, какое имя пользователь предопределил для себя. Я не могу просто назвать ключ «человек» в обоих случаях, потому что пользователь создает неопределенное количество людей и постоянно добавляет и удаляет людей. Если бы был способ просто подсчитать количество хранимых объектов или получить список имен всех хранимых объектов, моя проблема была бы решена.


person David    schedule 19.01.2014    source источник
comment
Есть несколько способов сделать это. Вы можете отслеживать имена, а затем передавать их в Bundle в свою новую активность, или вы можете использовать приведенный ниже код @longwalker, но изменить первую строку, чтобы получить каталог внутренних файлов, поскольку именно там сохраняются ваши файлы. Поэтому вы должны использовать getFilesDir(). См.: developer.android.com/reference/android/content/   -  person Luis    schedule 19.01.2014
comment
Или просто используйте fileList(). См.: developer.android.com/reference/android/content/   -  person Luis    schedule 19.01.2014
comment
Комментарии Леко решили мою проблему! Спасибо чувак   -  person David    schedule 20.01.2014
comment
Без проблем. Рад, что смог помочь.   -  person Luis    schedule 20.01.2014


Ответы (1)


Я предполагаю, что вы пытаетесь получить список файлов из определенного каталога. Вы можете сделать это следующим образом:

// Get local files
File directory = new File(Environment.getExternalStorageDirectory().toString() + localDir);

File[] listOfLocalFilesArray = directory.listFiles();

// get the names of files
String[] fileArray = new String[listOfLocalFilesArray.length];
for (int i = 0; i < listOfLocalFilesArray.length; i++) {
 fileArray[i] = listOfLocalFilesArray[i].getName();
}
person longwalker    schedule 19.01.2014
comment
что бы я поставил для localDir? - person David; 19.01.2014
comment
В каком бы каталоге вы ни хранили файлы! Если вы сохранили файлы в корневом каталоге внешнего хранилища, просто используйте Environment.getExternalStorageDirectory().toString(). - person Stephen C; 19.01.2014
comment
Понятно, могу я спросить, не знаете ли вы, какой будет каталог сохраненных объектов-персон? на данный момент, если я распечатаю fileArray, я получаю Android, музыку, подкасты, ..., DCIM. Кстати, спасибо за всю помощь! - person David; 19.01.2014