Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2018, 09:47   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А если переименование выбросить?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.08.2018, 09:54   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

100% какая-то буферизация вредит...

три вопроса.
1) если поставить после s.Flush(); s.Close();
открытие потока и попытаться прочитать несколько байт - это будут новые значения или старые? (можно их выдать в консоль для отладки)

2) если удалить блок переименования - поведение как-то изменится?

3) как ГРОМАДНЫЕ костыли, можно сделать цикл и в нём делать маленькую паузу ( минимально возможную), открывать поток, читать из него и закрывать, цикл крутить пока считанное значение не изменится (несколько байт оригинального файла предаварительно нужно запомнить) (кстати, для отладки можно подсчитать, сколько циклов для этого понадобится).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.08.2018, 10:03   #13
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Гугл нагуглил 2 похожих вопроса, где предлагается либо ждать с Exists + Sleep и т.п., либо копировать данные самому.
https://stackoverflow.com/questions/...-a-file-delete
https://stackoverflow.com/questions/...ove-completion
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.08.2018, 13:03   #14
Kuzma's_Mother
Пользователь
 
Регистрация: 12.12.2017
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
100% какая-то буферизация вредит...

три вопроса.
1) если поставить после s.Flush(); s.Close();
открытие потока и попытаться прочитать несколько байт - это будут новые значения или старые? (можно их выдать в консоль для отладки)

2) если удалить блок переименования - поведение как-то изменится?

3) как ГРОМАДНЫЕ костыли, можно сделать цикл и в нём делать маленькую паузу ( минимально возможную), открывать поток, читать из него и закрывать, цикл крутить пока считанное значение не изменится (несколько байт оригинального файла предаварительно нужно запомнить) (кстати, для отладки можно подсчитать, сколько циклов для этого понадобится).
Если удалить переименование - ничего не меняется.

Если удалить функцию удаления - то так же все будет хорошо. (то есть после s.Close(); содержимое файла меняется всегда, возможно к буферизации здесь нет вопросов). Содержимое файла всегда заменяется мусором.
А вот если СРАЗУ после этого удалить файл, и затем восстановить Recuva - то файл будет в исходном варианте, как до удаления.
Если восстанавливать файл, удаленный после 3х секундной паузы перед удалением(эмпирически вывел, 2х секунд еще мало) - то все снова опять хорошо, файл набит случайной гаммой.
Kuzma's_Mother вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто разъяснит почему так происходит с функцией JS DimaDR JavaScript, Ajax 4 15.11.2017 18:17
Мистика какая то, срочно прошу помощи знающих websaco Visual C++ 0 28.04.2014 16:44
Цикл Cardinal - почему так происходит? Nester Общие вопросы Delphi 2 28.07.2010 15:04
Form Region-почему так происходит Nester Общие вопросы Delphi 3 14.09.2009 21:16
Почему так происходит? Zeraim Общие вопросы Delphi 1 05.05.2008 14:10