Java 如何在以后使用保存的文件路径访问该文件

Java 如何在以后使用保存的文件路径访问该文件,java,android,file,Java,Android,File,我正在实现一个解决方案,它可以保存SQLite数据库文件的多个版本。每次保存数据库时,它都使用不同的文件名保存,我会附加datetime以实现差异。这很好,我可以用不同的时间戳保存多个版本的SQLite数据库,如下所示: /storage/emulated/0/AppName/Backups/auto_backup_2016_Feb_26_07_09 现在我想要的是将此路径保存到数据库或SharedReference,并在需要时能够进行恢复。为了能够恢复该文件,首先我需要再次访问该文件,因此我

我正在实现一个解决方案,它可以保存SQLite数据库文件的多个版本。每次保存数据库时,它都使用不同的文件名保存,我会附加datetime以实现差异。这很好,我可以用不同的时间戳保存多个版本的SQLite数据库,如下所示:

/storage/emulated/0/AppName/Backups/auto_backup_2016_Feb_26_07_09
现在我想要的是将此路径保存到数据库或SharedReference,并在需要时能够进行恢复。为了能够恢复该文件,首先我需要再次访问该文件,因此我尝试访问该文件,或者使用该文件的保存路径重新创建该文件

我尝试使用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
}

因此,如何将路径保存到文件,然后使用此路径在以后重新创建或访问同一文件。

我认为您的BackUpdateBaseFile是空的。您是否按如下方式创建了BackUpdateBase文件

        backupDatabaseFile=new File("/storage/emulated/0/AppName/Backups/auto_backup_2016_Feb_26_07_09");
新文件(字符串)
不会自行创建物理文件。就打电话

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

问题是我试图在一个没有上下文的类中创建一个文件。我将下面的语句移动到一个具有上下文的类中,它立即工作

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

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

是的,我像File backupdateabasefile=new File那样创建了它(backupFolder,Constants.AUTO\u BACKUP+“\u”+TimeUtils.getDatetimeSuffix(System.currentTimeMillis());我可以看到我创建了多个文件。如果您尝试File backedUpFile=new File(backupItem.getFilePath));万一你这么做了,它仍然显示为空?我试过了,它创建了一个这样的文件file:///storage/emulated/0/AppName/Backups/auto_backup_2016_Feb_26_07_39How 您正在创建备份文件吗?文件路径outputFileName=getFilesDir().getPath()+file.separator+System.currentTimeMillis();对我有用。但是这个问题看起来确实很奇怪。你能添加失败时引发的异常吗?奇怪的是,它在exists方法上失败了。唯一可以解释的是backedUpFile为null,这意味着没有执行新文件