10
votes

FileStream avec option de fichier DeleteonClose

Dans mon projet, je dois créer des fichiers temporaires dans un périphérique USB, que je souhaite supprimer de la fermeture. J'ai donc utilisé un code comme xxx

Ça fonctionne bien. Mais le problème est que je veux utiliser une autre fichierOption, comme aucune tampon. xxx

mais il ne supprime pas le fichier après la fermeture. S'il vous plaît aider.


0 commentaires

3 Réponses :


10
votes

Vous devez utiliser | au lieu de & .

Ce sont des drapeaux binaires, et lorsque vous dites & , vous les masquez tout en plus, ce qui n'entraîne aucune option.


5 commentaires

Mais je reçois une exception ", l'opération IO ne fonctionnera pas. Très probablement, le fichier deviendra trop long ou que la poignée n'était pas ouverte pour soutenir les opérations de l'IO synchrones.", Si je mets | au lieu de &, quand j'appelle cela.fcommandhandler.close ()


@Anuraj: ça ne veut pas dire | est faux, cela signifie que quelque chose dans votre usage est incorrect. Lasse a raison que vous avez besoin | à la place de &. L'exception est votre prochain problème à résoudre.


@Jeff Yates: merci laissez mon essayer avec d'autres options.


Comment puis-je faire cela dans vb.net? J'ai un problème similaire avec et le résultat est 0


Essayez d'utiliser ou à la place, je ne suis pas un expert VB cependant, si vous êtes bloqué, vous voudrez peut-être le chercher.



3
votes

Utiliser fileoption.deleeEntClose | File_flag_no_buffering Le & annule les annulations.

file_flag_no_buffering & fichierOption.deleeOntClose renvoie fileoption.none


5 commentaires

S'il vous plaît vérifier le commentaire de la première réponse.


@Anuraj: J'essaie de comprendre ce que le fichier_flag_no_buffering est, le deleteOncLose n'est définitivement pas appelé parce que vous faites un et plutôt.


@Yuriy Faktorovich - L'option File_Flag_no_Buffering est une option de fichier, qui aide à éviter la mise en cache de fichier lors de la lecture et de la rédaction de fichiers, par Windows. Vérifiez ceci Stackoverflow.com/Questtions/122362/...


@Anuraj: merci. Vous pouvez voir le | être appliqué dans les réponses sur ce fil.


@Yuriy Faktorovich: Je reçois une exception "L'opération de l'IO ne fonctionnera pas. Très probablement, le fichier deviendra trop long ou que la poignée n'était pas ouverte pour soutenir les opérations IO synchrones.", Si je mets | au lieu de &, quand j'appelle cela.fcommandhandler.close ()



0
votes

Essayez, y compris le drapeau WritethRough dans une liste à l'aide du | opérateur. Voir ce KB sur les exigences d'utilisation de File_flag_no_buffering . Son intéressant que MS n'a pas inclus ce drapeau dans l'énum. Y a-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?


2 commentaires

@Anthonywjones: J'ai essayé ceci mais je reçois toujours cette erreur. J'essaie d'obtenir est comme: je dois émettre des commandes à une USB via un périphérique de fichier (ex. Cmd.bin), et il retournera certaines réponses dans un fichier (ex. Res.bin). Mais si j'utilise les flux de flux C # normal C # cache la réponse et je vais toujours obtenir la même réponse, je dois donc utiliser le drapeau sans tampon. Et les fichiers sont temporaires, je dois donc la supprimer après utilisation; c'est pourquoi j'utilise Supprimer sur le drapeau proche.


Dans ce cas, la question que Yuriy vous a dirigée a une approche différente de l'ouverture d'un tel dossier, je donnerais cela.