我正在将一个Android应用移植到Flutter。在这个Android项目中,用户可以创建对象并进行存储。这是在Android中完成的方式
public void save(MyObject obj)
{
String json = gson.toJson(obj);
FileOutputStream fos = null;
try {
fos = context.openFileOutput("obj_"+ obj.getUid(), Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(json);
os.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
然后我使用以下内容加载它们
public List<MyObject> loadAll()
{
List<MyObject> objects = new ArrayList<>();
for(String fileName : context.fileList())
if(fileName.startsWith("obj_"))
{
MyObject o = loadObj(fileName);
if(o!=null)
objects.add(o);
}
return objects;
}
我现在正尝试将这些已经就绪的现有文件加载到新的Flutter应用程序中。这就是我现在的做法
Future<List<MyObject>> loadAllObjects() async{
try{
var objects = <MyObject>[];
var dir = await getApplicationDocumentsDirectory();
var stream = dir.list();
await for(FileSystemEntity f in stream){
if(f is File){
var json = f.readAsStringSync();
objects.add(parse(json));
}
}
return objects;
} catch(e) {
}
return [];
}
但是,目录getApplicationDocumentsDirectory返回的目录与Android Studio中的目录完全不同。因为这是一个新的应用程序,所以最好的等效项是什么。如何用旧应用程序覆盖它,以便仍然可以看到旧应用程序中制作的对象?