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

Utilisateur anonyme - 23 janv. 2018 à 16:18
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
- 30 janv. 2018 à 07:13
Bonjour , la question est dans le titre merci.

4 réponses

vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
Modifié le 23 janv. 2018 à 17:27
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 !

0
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
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
23 janv. 2018 à 20:24
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 .

0
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
0
Utilisateur anonyme > Utilisateur anonyme
Modifié le 23 janv. 2018 à 21:27
...
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151 > Utilisateur anonyme
23 janv. 2018 à 21:28
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
0
Utilisateur anonyme > vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022

Modifié le 23 janv. 2018 à 21:56
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 ?
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151 > Utilisateur anonyme
Modifié le 24 janv. 2018 à 00:47
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 !
0
Utilisateur anonyme
24 janv. 2018 à 21:38
Par hasard es-que la mémoire tampon a une taille fixe ?
0
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.
0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
30 janv. 2018 à 07:13
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.
0