2011-04-03 75 views
1

完成我的代碼將文件複製到新的位置,然後打開該文件在這個新位置。據我所知,在複製完成之前,代碼可能會嘗試打開文件存在問題。等待文件複製到Firefox擴展

此問題是特定的Firefox擴展其複製從默認位置SQLite數據庫到用戶指定一個新的位置。如果源碼文件並不在新位置存在,那麼調用openDatabase將創建一個新的空白數據庫。

// some pseudocode 
var old_path // is an nsILocalFile instance 
var new_path // is an nsILocalFile instance 

// copy file 
old_path.copyTo(new_path) 

// open sqlite database 
var ss = Components.classes["@mozilla.org/storage/service;1"] 
     .getService(Components.interfaces.mozIStorageService); 
var db = ss.openDatabase(new_path) 

如何等待副本完成? (事件,事件監聽器,觀察員......?)

+1

CopyTo從是同步的。你確定這個問題實際上並不是在複製之前沒有關閉的舊文件? – Neil 2011-04-05 23:25:20

+0

謝謝你讓我知道。一直在檢查我的代碼,它看起來像我的錯誤 - 我會做更多的檢查,以確保它現在正常工作。當我遇到問題時,我認爲'copyTo'可能是異步的。 – 2011-04-07 02:28:59

+0

我會關閉這個問題,因爲這是我造成問題的錯誤。 – 2011-04-07 02:29:38

回答

0

尼爾對我的問題的評論,促使我檢查我的代碼,我想我已經發現了導致錯誤地覆蓋sqlite的文件中的錯誤。

關閉問題。