Quelle difference entre Stream.Flush() et FileStream.Flush() ?

- - Dernière réponse : Whismeril
Messages postés
14099
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 janvier 2020
- 30 janv. 2018 à 07:13
Bonjour , la question est dans le titre merci.
Afficher la suite 

4 réponses

Messages postés
2023
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
17 janvier 2020
80
0
Merci
Bonjour !
La réponse est ici : https://msdn.microsoft.com/fr-fr/library/2bw4h516(v=vs.110).aspx
Regarde juste après le mot "Notes" en gras !

jcromprend pas trop à quoi sert flush en fait, et ni en quoi Filestream.flush apporte de plus...
"efface toutes les mémoires tampons pour ce flux et provoque l'écriture de toutes les données se trouvant dans des mémoires tampons sur l'appareil sous-jacent."

"Efface les mémoires tampons pour ce flux et provoque l'écriture dans le fichier des données mises en mémoire tampon."

il parle de quel flux ? si il efface ce flux ça veux dire qu'il copies des données qui ont rien à voir ? chui un peu perdu avec leur explications

https://msdn.microsoft.com/fr-fr/library/system.io.stream.flush(v=vs.110).aspx

https://msdn.microsoft.com/fr-fr/library/2bw4h516(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
Commenter la réponse de vb95
Messages postés
2023
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
17 janvier 2020
80
0
Merci
Bonjour !
Déjà la méthode Flush est très rarement utilisée !
Lorsque le système d'exploitation charge ou envoie un fichier il crée un flux de données ( un Stream ) pour pouvoir recevoir et envoyer ces données . Il faut voir ce flux de données comme une canalisation d'eau chez toi : tu veux 10 litres d'eau ta canalisation va débiter pendant 5 minutes . tu en veux 100 litres ce sera pendant 50 minutes ( d'où le nom de flux de données ) !
En informatique le flux de données est géré par paquets : un fichier de 1 Ko ne nécessitera qu'un paquet alors qu'un fichier de 20 Go en nécessitera plusieurs !
Quand tu télécharges un fichier par le Net par exemple tu télécharges ce fichier par paquets . Chaque paquet est mis dans une mémoire tampon et le système va chercher les morceaux de fichier dans cette mémoire tampon et reconstitue le fichier téléchargé .!
Flush permet de vider la mémoire tampon d'un flux de Données ( le fameux Stream ou FileStream ) : tout le contenu de la mémoire tampon est d'abord copié dans le fichier destination que tu télécharges !
Maintenant l'objet Stream et l'objet FileStream sont quasiment équivalents .

ok , donc une fois que toutes les données d'un fichier par exemple, qui à été copiés dans un fichier tout la place qui prenait dans la mémoires tampon est supprimer ? c'est un peu comme dispose() pour la ram
vb95
Messages postés
2023
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
17 janvier 2020
80 > Utilisateur anonyme -
bonsoir !
Imagines que tu viens de télécharger un fichier . Tu veux ensuite en télécharger un autre sans fermer le flux de données . Tu fais un Flush() sur le Stream pour vider la mémoire tampon du premier fichier téléchargé dans le fichier destination et tu réaffectes le flux de données au nouveau fichier : tu commences ensuite à télécharger ton second fichier
On ne supprime pas la mémoire tampon : on la vide en stockant les données dans le fichier destination
Utilisateur anonyme > vb95
Messages postés
2023
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
17 janvier 2020
-
donc quand tu as télécharger un fichier il est dans la mémoire tampon et quand tu veux le mettre dans un dossier ou fichier tu fais Flush() pour vider chaque paquets dans le tampon dans un dossier ou fichier de destination ?
vb95
Messages postés
2023
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
17 janvier 2020
80 > Utilisateur anonyme -
Le Flush() se fait généralement tout seul ! un Close() sur le Stream l'appelle en interne
Mais dans certains cas bien spéciaux il faut le faire ( exemple : afficher la progression de téléchargement d'un fichier entre les différents paquets. tu fais un Flush() de ton Stream et tu mets à jour ta barre de progression )
Personnellement je n'ai jamais utilisé cette méthode !
Commenter la réponse de vb95
0
Merci
Par hasard es-que la mémoire tampon a une taille fixe ?
Commenter la réponse de Utilisateur anonyme
0
Merci
Bonjour , si un programme a créer (ou plutôt l'OS) des mémoires tampon et que ce programme vient de se fermer es-que un autre programme pourrait utiliser une parties ou plus, suivant ses besoins ces Buffers ? et combien fait la taille maximum d'un Buffer? merci.
Whismeril
Messages postés
14099
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 janvier 2020
330 -
Question 1 non

Question 2, tu l'as déjà posée et nous n'y avons pas répondu, c'est qu'on a pas la réponse.
Commenter la réponse de Utilisateur anonyme