我有ArrayList
喜欢这个:
savedQuestions = new ArrayList<String>();
如何将其保存到Android本地存储中的文本文件单击按钮?
答案 0 :(得分:0)
即使ArrayList类在默认情况下是可序列化的,你也必须使Figur类(以及它使用的任何类)也可以序列化。这可能意味着:
class Figur implements Serializable {
// To handle the version of your class
private static final int serialVersionUID = 1L;
// Your code would go here
}
然后你必须用类似的东西序列化:
ObjectOutputStream fileOut = new ObjectOutputStream(new FileOutputStream("file"));
fileOut.writeObject(list);
fileOut.close();
反序列化:
ObjectInputStream fileIn = new ObjectInputStream(new FileInputStream("file"));
list = (ArrayList) fileIn.readObject();
fileIn.close();
另请注意,当您写入文件时,您希望附加到文件中的前一项而不是覆盖(错误)它们。 我认为objectOutputStream()或writeObject()可能在其中有一个可选参数,以允许它追加而不是覆盖。 示例:writeObject(list,true)而不是writeObject(list)。你必须研究这个以确定正确的方法。
此外,如果您无法使序列化工作,您可以将“circle,rect,line,color,fill”的值存储为文件中的一个figur对象,作为带有分隔符的单行,例如'逗号''在他们之间。然后从文件中读取一行并使用这些值来制作一个填充的figur对象。 例: 将这些字符串存储在文件中: 3,6,7,红色,4 6,3,4,蓝色,8
然后,当您阅读文件的内容时,构建您的对象:
Figur figure1 = new Figur("3","6","7","red","4");
Figur figure2 = new Figur("6","3","4","blue","8");
ArrayList<Figur> figurs =new ArrayList<Figur>();
figurs.add(figure1);
figurs.add(figure2);
它不如使用序列化那么高效,但是它完成了工作,文件的内容是人类可读的形式。
从链接https://community.oracle.com/thread/1193052?start=0&tstart=0