FileStream avec DeleteOnClose Fichier option
Dans mon projet, je dois créer des fichiers temp sur un périphérique USB, je veux supprimer à la Clôture. J'ai donc utilisé un code comme celui -
this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose);
Il fonctionne très bien. Mais le problème est que je veux les utiliser plus 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 de supprimer le Fichier après la clôture. S'il vous plaît aider.
OriginalL'auteur Anuraj | 2009-09-18
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser | au lieu de &.
Ce sont des binaires drapeaux, et quand tu dis &, vous efficacement le masque de tous, par conséquent, aucune des options à tous.
Cela ne signifie pas | est incorrecte, cela signifie quelque chose dans votre utilisation est incorrecte. Lasse est juste que vous avez besoin de | au lieu de &. L'exception est votre prochain problème à résoudre.
Yates: Merci ma essayer avec d'autres options.
Comment puis-je le faire dans VB.NET? J'ai un problème similaire avec
And
le résultat est 0Essayez d'utiliser
Or
au lieu de cela, je ne suis pas un expert VB mais si vous êtes coincé, vous souhaitez rechercher.OriginalL'auteur Lasse Vågsæther Karlsen
Utilisation FileOptions.DeleteOnClose | FILE_FLAG_NO_BUFFERING le & annule.
FILE_FLAG_NO_BUFFERING & FileOptions.DeleteOnClose retourne FileOptions.Aucun
Je suis en train d'essayer de comprendre quelle est la File_flag_no_buffering est, le DeleteOnClose est certainement pas appelé parce que vous êtes en train de faire un et au lieu de un ou.
Faktorovich - Le File_flag_no_buffering option fichier est un fichier option, qui permet d'éviter la mise en cache des fichiers lors de la lecture et de l'écriture de fichiers, par Windows. Cochez cette stackoverflow.com/questions/122362/...
Je vous remercie. Vous pouvez voir l' | appliquée dans les réponses sur ce thread.
Faktorovich:j'obtiens une exception "IO opération ne fonctionnera pas. La plupart probable que le fichier devient trop long ou la poignée n'a pas été ouvert pour soutenir les opérations d'e / s synchrones.", si je mets de | au lieu de &, lorsque je suis à l'appel de cette.fcommandHandler.Close()
OriginalL'auteur Yuriy Faktorovich
Essayer y compris la
WriteThrough
drapeau dans une liste à l'aide de l'opérateur|. Voir ce KO sur les exigences pour l'utilisation de FILE_FLAG_NO_BUFFERING. Il est intéressant que MS n'a pas inclus ce drapeau de l'enum. Est-il une raison pourquoiWriteThrough
ne pas faire ce que vous avez besoin dans ce scénario? Vous essayez d'écrire des données sécurisées?Dans ce cas, la question que Youri a ordonné de vous a une approche différente de l'ouverture d'un tel fichier, je donnerais un aller.
OriginalL'auteur AnthonyWJones