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
не делает то, что вам нужно в этом сценарии? Вы пытаетесь написать безопасные данные?