FileStream con la opción DeleteOnClose File
-
22-07-2019 - |
Pregunta
En mi proyecto, tengo que crear algunos archivos temporales en un dispositivo USB, que quiero eliminar al cerrar. Entonces usé un código como
this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose);
Funciona bien. Pero el problema es que quiero usar una FileOption más, como Sin almacenamiento en búfer.
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);
Pero no elimina el archivo después de cerrar. Por favor ayuda.
Solución
Debe usar |
en lugar de & amp;
.
Estos son indicadores binarios, y cuando dices & amp;
, los enmascaras de manera efectiva, lo que no tiene ninguna opción.
Otros consejos
Use FileOptions.DeleteOnClose | FILE_FLAG_NO_BUFFERING
el & amp;
los cancela.
FileOptions.None
Intente incluir el indicador WriteThrough
también en una lista con | operador. Consulte este KB sobre los requisitos para usar FILE_FLAG_NO_BUFFERING
. Es interesante que MS no haya incluido esta bandera en la enumeración. ¿Hay alguna razón por la cual WriteThrough
no hace lo que necesita en este escenario? ¿Estás intentando escribir datos seguros?