75 votes

Que signifie flux? Quelles sont ses caractéristiques?

C++ et C# à la fois l'utilisation de ce mot - stream de nom de nombreuses classes.

  • C++ : iostream, istream, ostream, stringstream, ostream_iterator, istream_iterator et ainsi de suite.
  • C# : Stream, FileStream,MemoryStream, BufferedStream et ainsi de suite.

Donc, il m'a rendu curieux de savoir qu'est - stream signifie? Quelles sont les caractéristiques d'un cours d'eau? Quand puis-je utiliser ce terme pour le nom de mon cours? Est-ce limité aux e/S de fichier classes seulement?

Il est intéressant de noter, C ne pas utiliser ce mot n'importe où, pour autant que je sais.

86voto

Marc Gravell Points 482669

De nombreuses données-structures (listes, collections, etc) agissent comme des conteneurs - ils tenir un ensemble d'objets. Mais pas un cours d'eau, si une liste est un seau, puis un flux de données est un tuyau. Vous pouvez extraire des données à partir d'un flux ou d'envoyer les données dans un flux d' - mais normalement qu'une seule fois et uniquement dans un sens (il y a des exceptions bien sûr). Par exemple, TCP données sur un réseau est un cours d'eau, vous pouvez envoyer (ou recevoir) des blocs de données, mais uniquement en connexion avec l'autre ordinateur, et généralement qu'une seule fois - vous ne pouvez pas revenir en arrière le Internet.

Cours d'eau peut également manipuler des données en passant par eux; la compression de flux, le chiffrement des flux, etc. Mais encore une fois - la métaphore sous-jacente ici est un tuyau de données. Un fichier est aussi généralement accessibles (à un certain niveau) comme un flux, vous pouvez accéder à des blocs de données séquentielles. Bien sûr, la plupart des systèmes de fichiers fournissent également un accès aléatoire, les cours d'eau offrent des choses comme les Chercher, Position, Longueur, etc - mais pas toutes les implémentations de soutien tels. Il n'a pas de sens à chercher de certains cours d'eau, ou d'obtenir la longueur d'un socket ouvert.

6voto

Mehrdad Points 70493

Il ya un couple de différentes significations. #1 est ce que tu veux sans doute dire, mais vous voudrez peut-être regarder au n ° 2 de trop.

  1. Dans les bibliothèques, comme ceux que vous avez mentionné, un "stream" n'est qu'une abstraction pour "données binaires", qui peut ou peut ne pas être d'accès aléatoire (par opposition à des données qui sont générées en continu, comme si vous écriviez un flux générés de manière aléatoire des données), ou qui peuvent être stockées n'importe où (dans la RAM, du disque dur, sur un réseau, dans le cerveau de l'utilisateur, etc.). Ils sont utiles car ils vous permettent d'éviter les détails, et d'écrire le code générique qui ne se soucient pas de la source du ruisseau.

  2. Un ordinateur concept de science, un "flux" est parfois pensé (vaguement) comme "finie ou infinie quantité de données". Le concept est un peu difficile à expliquer sans exemple, mais dans la programmation fonctionnelle (comme dans le Schéma), vous pouvez transformer un objet en un apatride objet, en traitant de l'historique de l'objet comme un "flux" de changements. (L'idée est que l'état d'un objet peut changer au fil du temps, mais si vous considérez l'objet de toute la vie comme un "flux" de change, le cours d'eau dans son ensemble ne change jamais, et vous pouvez faire de la programmation fonctionnelle avec elle.)

4voto

Devendra D. Chavan Points 4707

De Flux e/S (même si, en java, le sens est le même en C++ / C#)

Un Flux d'e/S représente une entrée source ou une destination de sortie. Un cours d'eau peut représenter beaucoup de différents les types de sources et de destinations, y compris les fichiers de disques, de périphériques, d'autres les programmes, et de la mémoire des tableaux.

Flux de charge de nombreux types différents de données, y compris les octets, les types de données primitifs, localisée des personnages et des objets. Certains cours d'eau simplement transmettre des données, d'autres de manipuler et de transformer les données d'une manière utile.

Peu importe la façon dont ils travaillent en interne, tous les cours d'eau présentent le même simple modèle pour les programmes qui les utilisent: Un le flux est une séquence de données. Un le programme utilise un flux d'entrée à lire des données provenant d'une source, d'un élément à un temps.

En C#, les cours d'eau, vous avez mentionné dériver de la classe de base abstraite de Flux. Chaque mise en œuvre de cette classe de base a un but spécifique.

Par exemple, FileStream soutient les opérations de lecture / écriture sur un fichier, tandis que la MemoryStream fonctionne sur un flux de mémoire de l'objet. Contrairement à l' FileStream et MemoryStream classes, BufferedStream classe permet à l'utilisateur de tampon de l'I/O.

En plus des classes ci-dessus, il existe plusieurs autres classes qui implémentent l' Stream classe. Pour une liste complète, reportez-vous à la documentation MSDN sur Stream classe.

2voto

Shadow Wizard Points 38568

Termes et explications de côté, le mot flux lui-même a été prise à partir de la "vraie vie" flux - au lieu de l'eau, les données sont transférées d'un endroit à un autre.

Concernant la question et n'était toujours pas ansewered, vous pouvez nommer vos propres classes dans les noms qui contiennent des flux, mais seulement si vous mettez en œuvre une sorte de nouveau flux, il aura de signification correcte.

2voto

aaz Points 3669

En C les fonctions définies dans <stdio.h> fonctionner sur les cours d'eau.

Section 7.19.2 Flux en C99 traite de la façon dont ils se comportent, mais pas ce qu'ils sont, à l'exception de "une séquence ordonnée de caractères".

La justification qui donne plus de contexte dans la section correspondante, à commencer par:

C hérité de sa notion de texte courants d'UNIX environnement dans lequel il est né.

C'est ainsi que le concept vient de la.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X