【发布时间】:2013-12-29 16:09:21
【问题描述】:
我写信给你一个我无法解决的问题。 我有一个向量的向量。
Vector<Vector<Item>> vectorItem;
我不知道如何将其保存到文件中,然后如何加载。
我试试这个:
public void save(String name, Context ctx, Vector<Vector<Item>> vectorItem) {
try {
String sdCard = Environment.getExternalStorageDirectory().toString();
File dir = new File(sdCard + "/dir");
File file = new File(dir.getAbsolutePath(), name);
if(!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = ctx.openFileOutput(name, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(vectorItem);
oos.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
public Vector<Vector<Item>> load(String name, Context ctx) {
Vector<Vector<Item>> vectorItem; = null;
String sdCard = Environment.getExternalStorageDirectory().toString();
File dir = new File(sdCard + "/dir");
try {
FileInputStream fis = ctx.openFileInput(name);
ObjectInputStream ois = new ObjectInputStream(fis);
vectorItem = (Vector<Vector<Item>>) ois.readObject();
}
catch(IOException e) {
e.printStackTrace();
}
catch(ClassNotFoundException e) {
e.printStackTrace();
}
return vectorSezioni;
}
但这是错误: 12-29 16:57:07.140: W/System.err(32681): java.io.IOException: open failed: ENOENT (没有这样的文件或目录)
【问题讨论】:
-
第一种方法:保存时序列化,加载时反序列化;第二种方法:将第一个向量值保存在行上,第二个向量值用分隔标记
,,;分隔。 -
只是吹毛求疵,但 Vector 是一个遗留类。如果您必须进行同步,请使用 Collections.synchronizedList,否则只需使用 ArrayList。此外,通过接口而不是实现来引用对象。所以使用 List
- >
标签: android file object vector storage