FileStream с опцией файла DeleteOnClose

в моем проекте я должен создать некоторые временные файлы на 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.Нет!--1-->


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