Показать сообщение отдельно

  #76  
Старый 14.02.2010, 19:59
AlexTheC0d3r
Постоянный
Регистрация: 25.07.2008
Сообщений: 454
С нами: 9365528

Репутация: 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%
 
Ответить с цитированием