繁体   English   中英

如何在Android中获取应用程序数据目录

[英]How to Get Application Data Dir in Android

如何获取Android Fragment或标准Java类(不是Activity)中的Application Data Dir。

我正在做一项作业,需要使用序列化在Android中执行CRUD操作。 到目前为止,我有一个标准的Java类,可以像这样执行读写

private void readFile() {
    try{
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath));
        books = (List<Book>)ois.readObject();
        ois.close();
    }catch (Exception e){
        Log.e(TAG, e.getMessage());
    }
}

private void writeFile(){
    try {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath));
        oos.writeObject(books);
        oos.flush();
        oos.close();
    } catch (Exception e){
        Log.e(TAG, e.getMessage());
    }
}

问题是,此类构造函数需要像这样传递String DataDir

公共类BookSvcSioImpl实现IBookSvc {

private final String TAG = "BookSvcSioImpl";
private List<Book> books = null;
private String dataDir = null;
private String filePath = dataDir + "/myBooks.sio";    


public BookSvcSioImpl(String appDataDirectory){
    this.dataDir = appDataDirectory;
    readFile();
}

我使用此String参数来构造文件路径。 我的问题是如何在Fragment或不是Activity的标准Java类中获取Application Data Directory。 在Activity中,可以像这样调用getApplicationInfo.DataDir来获取它

  String dataDir = getApplicationInfo().dataDir;
                BookSvcSioImpl sioService = new BookSvcSioImpl(dataDir);
                sioService.create(enteredBook);

我无法在Fragment或Java类中执行此操作。

我无法在片段中执行此操作

Fragment上调用getActivity()以获取承载该片段的Activity

请注意, Activity (或其他Context getFilesDir()上的getFilesDir()getApplicationInfo().dataDir更好,因为我不知道dataDir可以调整以处理平板电脑上的多个帐户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM