java - Android:如何访问使用 FileOutputStream 存储的对象

标签 java android fileinputstream fileoutputstream

我能够将对象存储到 Android 设备,但在检索它们时遇到问题。这些对象中的数据由用户设置(即字符串名称、整数日期等)。这些对象被存储(它们的 key 是它们的名称),稍后在不同的 Activity 中它们应该被检索。我无法检索它们,因为在新 Activity 中我不知道它们的名称是由用户确定的。

存储对象(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();

由于我处于新 Activity 中,我不知道用户预先确定的名称是什么。我不能简单地在两者中都命名关键的“人员”,因为用户正在创建不确定数量的人员,并且不断添加和删除人员。如果有一种方法可以计算存储对象的数量,或者获取所有存储对象名称的列表,那么我的问题就可以解决。

最佳答案

我假设您正在尝试从某个目录获取文件列表。您可以这样做:

// 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();
}

关于java - Android:如何访问使用 FileOutputStream 存储的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21211974/

相关文章:

java - Mockito.any() 匹配泛型类型 T 的任何实例

java - 集成 java 和 apex (salesforce)

android - 从数据库中获取的 ListView 中的重复值

java - 当我尝试从文件中读取某些字节时,为什么索引会超出范围?

java - 在InputStream和FileInputStream之间切换的简单方法?

java - 不是语句(for 循环)

java - 下载所有 Maven 插件

Android:如何以编程方式将 Activity 的主题设置为 Theme.Dialog

android - 如何在 Android 9+ 中以编程方式接听或拒绝来电?

java - 为什么我们在下面的代码中使用 -1?