颤振context.fileList()等价

时间:2019-08-29 10:40:59

标签: android flutter

我正在将一个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中的目录完全不同。因为这是一个新的应用程序,所以最好的等效项是什么。如何用旧应用程序覆盖它,以便仍然可以看到旧应用程序中制作的对象?

0 个答案:

没有答案