我正在实施一个保存多个版本的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
}
那么如何将路径保存到文件中,然后使用此路径稍后重新创建或访问同一文件。
答案 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), "");