FileStream с опцией DeleteOnClose File

В моем проекте мне нужно создать временные файлы на USB-устройстве, которые я хочу удалить при закрытии. Так что я использовал код как

this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose);

Работает нормально. Но проблема в том, что я хочу использовать еще один FileOption, например, без буферизации.

private const FileOptions FILE_FLAG_NO_BUFFERING = (FileOptions)0x20000000;

this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose & FILE_FLAG_NO_BUFFERING);

Но это не удаление файла после закрытия. Пожалуйста помоги.

3 ответа

Решение

Вам нужно использовать | вместо &.

Это двоичные флаги, и когда вы говорите "&", вы эффективно маскируете их все, что не дает никаких вариантов вообще.

Использовать FileOptions.DeleteOnClose | FILE_FLAG_NO_BUFFERING & отменяет их.

FILE_FLAG_NO_BUFFERING & FileOptions.DeleteOnClose возвращает FileOptions.None

Попробуйте включить WriteThrough пометить в списке, используя | оператор. См. Этот KB в требованиях для использования FILE_FLAG_NO_BUFFERING. Интересно, что MS не включил этот флаг в перечисление. Есть ли причина, почему WriteThrough не делает то, что вам нужно в этом сценарии? Вы пытаетесь написать безопасные данные?

Другие вопросы по тегам