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