J’ai regardé quelques articles de blog en ligne sur la sauvegarde de Stream dans un fichier,Beaucoup sont incorrectes。 (J’ai trouvé plusieurs problèmes : mauvaise performance, anormalité lorsque le flux est trop grand)
Après avoir obtenu un stream, comment sauvegarder élégamment ce stream en code
La méthode la plus élégante devrait être la méthode CopyTo ou CopyToAsync
ici inputStream.Seek(0, SeekOrigin.Begin) ; Pas nécessairement, veuillez utiliser ce code selon vos besoins, par exemple il suffit de copier le flux depuis le 10e octet, etc
L’utilisation de l’approche asynchrone prendra un peu plus de temps pour cette écriture, mais cela améliorera les performances globales et permettra au processeur de gérer d’autres tâches
Notez que lorsque vous utilisez CopyToAsync, pensez à ajouter await ; lors de l’exécution de ce code, vous transmettrez l’exécution à l’IO, la plupart des traitements d’IO ne nécessitent pas de CPU pour calculer, ce qui améliore les performances globales
Aussi, si l’iputStream vient de l’extérieur, je ne recommande pas de le relâcher à l’intérieur de cette méthode, pourquoi ? J’ai utilisé un bon ruisseau et il a été tué quand je suis passé dans une entreprise
La deuxième méthode consiste à contrôler vous-même le cache de réplication mémoire, qui disposera d’une copie mémoire supplémentaire
Ce que fait cette méthode, c’est vous permettre de modifier la valeur d’un nouvel octet[1024], vous donnant ainsi le contrôle sur le cache copié
Voici quelques méthodes non recommandées, mais qui sont pratiques lors de l’écriture
La méthode ci-dessus copiera la mémoire deux fois, et si la longueur de la ressource d’entrée est de 1G, elle occupera 2G de ressources
Comme précédemment, il faut demander un grand cache, comme montré dans le code suivant
En termes d’efficacité et d’élégance de code, ils sont en réalité inférieurs à la méthode CopyTo, et à cause du flux. La longueur comme longueur ne détermine pas le cache, donc ce n’est pas aussi bon que la seconde méthode
Voici une méthode très lente, un octet par octet, l’écriture est très lente
Transféré depuis :La connexion hyperlientérée est visible. (Fin)
|