如何在Android中将Hashset保存到文件?

3

我试图使用以下代码将 Hashset(整数)导出到文件,但似乎无法使用 outputStream.write() 完成此操作。这里或谷歌上似乎没有任何涵盖此问题的早期问题,这令我感到惊讶。

在 Activity 中定义了 Hashset 如下:

HashSet<Integer> set = new HashSet<Integer>();

并且方法是:

    public void savehashset(){
    String filename="storedhashset.set";
    File storedhashset = new File(getFilesDir(), filename);
    FileOutputStream outputStream;
    try {
      outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
      outputStream.write(set);
      outputStream.close();
    } catch (Exception e) {
      e.printStackTrace();
}

为什么你不能使用它?你检查过你的应用程序是否有写入文件的权限了吗? - Pablo Lozano
2个回答

4
您正在尝试将您的HashSet序列化到文件中。为此,您可以使用ObjectOutputStream
try {
      outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
      ObjectOutputStream oos = new ObjectOutputStream(outputStream);
      oos.writeObject(set);
      oos.close();
    } catch (Exception e) {
      e.printStackTrace();
}

来自writeObject文档:

将一个对象写入目标流。

该方法用于将一个对象写入目标流中。

谢谢你的回答。我能使用ObjectInputStream ois = new ObjectInputStream(inputStream); set =ois.readObject();读取它吗?看起来我不能转换这个对象? - Andy

0

由于HashSet实现了Serializable接口,您可以尝试这样做:

ObjectOutputStream output = new ObjectOutputStream(
                            new FileOutputStream("object.data"));

HashSet<Integer> object = new HashSet<Integer>();

output.writeObject(object);
//etc.

output.close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接