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

Мога да съхранявам обекти на устройство с Android, но имам проблеми с извличането им. Данните в тези обекти се задават от потребителя (т.е. име на низ, int ден и др.). Тези обекти се съхраняват (като техният ключ е тяхното име) и по-късно в различна дейност те трябва да бъдат извлечени. Не мога да ги извлека, защото в новата дейност не им давам име, тъй като се определя от потребителя.

За съхраняване на обекти (обект=човек)

  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
Има няколко начина да го направите. Можете да следите имената и след това да ги предавате в пакет към новата си дейност или можете да използвате кода на @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
Коментарите на Leco решиха проблема ми! Мерси човече   -  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, Music, Podcasts, ..., DCIM. Между другото благодаря за цялата помощ досега! - person David; 19.01.2014