2016-02-26 54 views
1

我實現,節省了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

您可以添加失敗時引發的異常嗎?奇怪的是,它在存在方法上失敗。這可以解釋它的唯一的事情就是backedUpFile爲空,這意味着新的文件並沒有執行 –

回答

1

我覺得你backupDatabaseFile是空的。你是否創建瞭如下的backupDatabaseFile?

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

是的,我創建了像文件backupDatabaseFile =新的文件(backupFolder, Constants.AUTO_BACKUP +「_」 + TimeUtils.getDatetimeSuffix( System.currentTimeMillis的())); –

+0

我可以看到我有多個文件創建 –

+0

你嘗試文件backedUpFile =新的文件(backupItem.getFilePath)); Incase你做了它仍然顯示空? –

2

new File(String)不自己創建物理文件。只是打電話

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

原來的問題是,我試圖創建一個沒有上下文的類中的文件。我將以下語句移至具有上下文並且立即工作的類

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

File backupFolder = new File(Environment.getExternalStoragePublicDirectory(Constants.BACKUP_FOLDER), ""); 
相關問題