Muchas estructuras de datos (listas, colecciones, etc.) actúan como contenedores - contienen un conjunto de objetos. Pero no una corriente; si una lista es un cubo, entonces una secuencia es una manguera. Puede extraer datos de una secuencia o insertar datos en una secuencia, pero normalmente solo una vez y solo en una dirección (hay excepciones, por supuesto). Por ejemplo, los datos TCP sobre una red son una secuencia; puede enviar (o recibir) trozos de datos, pero solo en conexión con la otra computadora, y generalmente solo una vez; no puede rebobinar Internet.
Las transmisiones también pueden manipular los datos que pasan a través de ellas; flujos de compresión, flujos de encriptación, etc. Pero nuevamente, la metáfora subyacente aquí es una manguera de datos. Un archivo generalmente también se accede (en algún nivel) como una secuencia; puedes acceder a bloques de datos secuenciales. Por supuesto, la mayoría de los sistemas de archivos también brindan acceso aleatorio, por lo que los streams ofrecen cosas como Seek, Position, Length, etc., pero no todas las implementaciones admiten eso. No tiene sentido buscar algunas transmisiones u obtener la longitud de un socket abierto.
+1 por hacer una buena pregunta! – Nawaz
+1 Otra forma más formal de hacer la misma pregunta sería: ¿Cuál es el tipo de datos abstractos de una transmisión? –