我发现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