
14.02.2010, 19:59
|
|
Постоянный
Регистрация: 25.07.2008
Сообщений: 454
Провел на форуме: 1229135
Репутация:
425
|
|
Сообщение от \\ChaOs//
Код:
do {
...
DeleteFile(textBox1.Text+"/"+fdata.cAlternateFileName);
...
for (int m = 1; m <= int.Parse(cycles); m++)
{
...
tempfile = CreateFile(textBox1.Text + "/" + fdata.cAlternateFileName, EFileAccess.GenericWrite, EFileShare.Write, IntPtr.Zero, ECreationDisposition.CreateAlways, EFileAttributes.Normal, IntPtr.Zero);
SetFilePointer(tempfile, 0, 0, 0);
...
DeleteFile(textBox1.Text + "/" + fdata.cAlternateFileName);
}
}
Хм, в коде ты сначала удаляешь файл, а потом создаешь новый с таким же именем, причем на каждой итерации цикла (кстати SetFilePointer() - лишнее, т.к. файл-то пустой).
Получается, что данные фактически не перезаписываются и восстановить их все таки можно, или это я чего-то не понимаю?
При удалении файла соответствующий элемент каталога на самом деле не удаляется, он просто становится недействующим за счет изменения первого байта элемента (первого символа имени файла) на E5H. Впоследствии этот элемент может быть перезаписан при создании нового файла
насчет setFilePointer(); - лучше лишний раз перестраховаться, и убедиться что пишу с самого начала файла, т.к. даже в мсдн не написано, что указатель устанавливается на начало файла 100%
|
|
|