如何使用保存的文件路径

时间:2016-02-26 07:24:30

标签: java android file

我正在实施一个保存多个版本的SQLite数据库文件的解决方案。每次保存数据库时,都会使用不同的文件名保存,我会附加日期时间来区分。这工作正常,我能够使用不同的时间戳保存多个版本的SQLite数据库,如下所示:

/storage/emulated/0/AppName/Backups/auto_backup_2016_Feb_26_07_09

现在我想要的是将此路径保存到数据库或SharedPreference,并在需要时我希望能够恢复。为了能够恢复文件,首先我需要再次访问该文件,因此我尝试使用保存的文件路径再次访问或重新创建该文件。

我尝试使用getAbsolutePath并且不起作用,现在我正在尝试Uri。这是我保存文件的方式

File backupDatabaseFile = new File(backupFolder,
                    Constants.AUTO_BACKUP + "_" + TimeUtils.getDatetimeSuffix(System.currentTimeMillis()));

Uri uri = Uri.fromFile(backupDatabaseFile);
backupItem.setFilePath(uri.toString());

以下是我尝试重新创建已保存文件的方法,以便我可以恢复它:

Uri uri = Uri.parse(backupItem.getFilePath);
        File backedUpFile = new File(uri.getPath());

这就是失败的地方

 if (backedUpFile.exists()) {
//do something
}

那么如何将路径保存到文件中,然后使用此路径稍后重新创建或访问同一文件。

3 个答案:

答案 0 :(得分:2)

new File(String)本身不会创建物理文件。只需致电

    File f = new File(path);
    if(!f.exists()){
        f.createNewFile();
    }

答案 1 :(得分:1)

我认为你的backupDatabaseFile是空的。您是否按如下方式创建了backupDatabaseFile?

        backupDatabaseFile=new File("/storage/emulated/0/AppName/Backups/auto_backup_2016_Feb_26_07_09");

答案 2 :(得分:0)

原来问题是我试图在没有Context的类中创建一个File。我将以下语句移动到具有Context的类中,并且它立即起作用

public static final String BACKUP_FOLDER = "AppName/Backups";

File backupFolder = new File(Environment.getExternalStoragePublicDirectory(Constants.BACKUP_FOLDER), "");