FileStream avec l'option DeleteOnClose File
-
22-07-2019 - |
Question
Dans mon projet, je dois créer des fichiers temporaires sur un périphérique USB, que je veux supprimer lors de la fermeture. J'ai donc utilisé un code comme
this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose);
Cela fonctionne bien. Mais le problème est que je veux utiliser un autre FileOption, comme Pas de mise en mémoire tampon.
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);
Mais ce n'est pas supprimer le fichier après la fermeture. S'il vous plaît aider.
La solution
Vous devez utiliser |
au lieu de & amp;
.
Ce sont des indicateurs binaires, et lorsque vous dites & amp;
, vous les masquez tous, ce qui ne donne aucune option.
Autres conseils
Utilisez FileOptions.DeleteOnClose | FILE_FLAG_NO_BUFFERING
le & amp;
les annule.
FILE_FLAG_NO_BUFFERING & amp; FileOptions.DeleteOnClose
renvoie FileOptions.None
Essayez d'inclure l'indicateur WriteThrough
dans une liste à l'aide de l'option | opérateur. Consultez cette Ko sur la configuration requise pour utiliser FILE_FLAG_NO_BUFFERING
. Il est intéressant de noter que MS n'a pas inclus ce drapeau dans l'énumération. Existe-t-il une raison pour laquelle WriteThrough
ne fait pas ce dont vous avez besoin dans ce scénario? Vous essayez d'écrire des données sécurisées?