我发现 File.Copy 很乐意将文件复制到自身而不会引发异常。错误地,我将一个 sqlite 数据库文件复制到自身上,并且该文件不再是有效的数据库。我已经多次重复这个作为测试并得到相同的结果。使用 winmerge(或文本编辑器)我看到结果文件有 0 个字节,但 Windows 资源管理器仍然显示原始文件大小。我在这里错过了什么?(vs2008, win7-64)
编辑:一些代码。我知道很简单。而且不是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 的交互。我希望文件复制失败并出现异常,但它只是默默地消除了整个文件。