Что нового

[Баг] Удаление открытого файла

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 124
Репутация
2 322
Код:
$hFile = FileOpen('test.txt', 2)
FileWrite($hFile, 'test')

MsgBox(64, '', 'FileExists: ' & FileExists('test.txt') & ' = "'  & FileRead('test.txt') & '", delete the file and press OK.')
MsgBox(64, '', 'FileExists: ' & FileExists('test.txt') & ' = "'  & FileRead('test.txt') & '"')

FileClose($hFile)
MsgBox(64, '', 'FileExists: ' & FileExists('test.txt') & ' = "'  & FileRead('test.txt') & '"')


Запускаем скрипт и удаляем рядом файл test.txt, результат мне не понятен.
Во-первых, почему файл удаляется, а во-вторых, почему FileWrite возвращает 1?

Если это всё не баги, то каким образом можно осуществить проверку того, что файл был изменён и что запись в него уже не актуальна?
Можно конечно проверять перед записью что файл удалён, но хотелось бы проверять это более корректно, ведь файл ещё может быть изменён...

AutoIt 3.3.10.0 (x86), Win7 x64 Rus.
 

joiner

Модератор
Локальный модератор
Сообщения
2 993
Репутация
501
может быть остановка скрипта работает в глобальном масштабе? то же самое происходит, если вместо sleep использовать MsgBox. получается, что все дескрипторы освобождаются, то есть "как бы" :smile:
интересный момент, если вместо sleep установить
Код:
FileDelete('test.txt')

то файл сразу не удалится, но после закрытия дескриптора произойдет удаление. это что? отложенное задание? и функция удаления возвращает успех.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 318
CreatoR [?]
почему файл удаляется
Похоже, что FileOpen() возвращает полностью расшаренный (BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE, $FILE_SHARE_DELETE)) дескриптор, потому он и удаляется без проблем.
 
Верх