我發現File.Copy很樂意將文件複製到自身而不會引發異常。我錯誤地將sqlite數據庫文件複製到自身上,並且該文件不再是有效的數據庫。 我已經多次重複這個測試並得到相同的結果。使用winmerge(或文本編輯器),我看到結果文件有0字節,但Windows資源管理器仍然顯示原始文件大小。 我在這裏錯過了什麼? (vs2008,win7-64)System.Data.SQLite和奇怪的File.Copy錯誤
編輯:一些代碼。我非常簡單,我知道。它不是0字節,它都是nuls。
public bool RestoreDatabaseSqlite(string backupFilePath)
{
try
{
File.Copy(backupFilePath, _databaseFilePath, true);
}
catch(Exception ex)
{
MessageBox.Show("Error restoring database file: " + ex.Message, "Database Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
return true;
}
編輯#2:問題是特定於System.Data.SQLite,開放SQLiteConnection上的文件,並與File.Copy的相互作用。我期望文件副本失敗並出現異常,但它只是默默地提醒整個文件。
你用二進制安全的編輯器(例如十六進制編輯器),或者只是簡單的文本編輯器檢查? – CodesInChaos 2010-11-09 08:56:53
對不起,但你錯了。用File.Copy方法自己試了一下,得到「進程無法訪問該文件...因爲它正在被另一個進程使用」。請發佈您的代碼,因爲它*不*使用File.Copy – 2010-11-09 09:02:51
使用wnbrowse它看起來像它的所有nuls。 – 2010-11-09 09:05:03