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.

Était-ce utile?

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?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top