Я считаю, что File.Copy с удовольствием скопирует файл на себя, не создавая исключения. По ошибке я скопировал файл базы данных sqlite на себя, и этот файл больше не является действительной базой данных.
Я повторил это как тест несколько раз и получил тот же результат. Используя winmerge (или текстовый редактор), я вижу, что файл результата имеет 0 байтов, но проводник Windows по-прежнему показывает исходный размер файла.
Что я здесь пропустил?
(2008, win7-64)
Редактировать: некоторый код. Довольно упрощенно я знаю. И это не 0 байтов, это все нули.
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, открытым соединением SQLite для файла и взаимодействием с File.Copy. Я ожидаю, что копирование файла завершится неудачей с исключением, но оно просто молча удаляет весь файл.