Filestream mit DeleteOnClose Datei-Option
-
22-07-2019 - |
Frage
In meinem Projekt habe ich einige temporäre Dateien in einem USB-Gerät erstellen, die ich beim Schließen löschen möchten. So habe ich einen Code wie
this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose);
Es funktioniert gut. Aber das Problem ist, ich noch eine FileOption verwenden möchten, wie keine Pufferung.
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);
Aber es ist nicht die Datei zu löschen nach dem Schließen. Bitte helfen.
Lösung
Sie müssen statt |
&
verwenden.
Dies sind Binärflags, und wenn Sie &
sagen, Sie effektiv sie alle weg Maske, überhaupt in keine Optionen zur Folge hat.
Andere Tipps
Mit FileOptions.DeleteOnClose | FILE_FLAG_NO_BUFFERING
der &
hebt sie aus.
FILE_FLAG_NO_BUFFERING & FileOptions.DeleteOnClose
kehrt FileOptions.None
Versuchen einschließlich der WriteThrough
Flagge als auch in einer Liste der Verwendung | Operator. Sehen Sie dieses KB zu den Anforderungen an FILE_FLAG_NO_BUFFERING
verwenden. Seine interessant, dass MS dieses Flag nicht enthalten ist in der Enum. Gibt es einen Grund, warum WriteThrough
nicht tut, was Sie in diesem Szenario müssen? Sie versuchen, eine sichere Daten schreiben?