Quelle est la différence entre les E / S basées sur les canaux et les E / S basées sur les flux en Java?

21

Quelle est la différence entre une entrée basée sur un flux et une entrée basée sur un canal? L'API java fournit à la fois le flux dans le package "java.io" et le canal dans le package "java.nio". Lequel des deux offre les meilleures performances et réduit les erreurs d'exécution?

Pranit Bauva
la source
avez-vous vérifié le wiki de la balise 'nio' sur Stack Overflow? "NIO signifie 'New I / O'. Il a été introduit dans JDK 1.4 dans le package java.nio. Il comprend plusieurs éléments: ..."
gnat
1
c'est une bonne question, il y a 10 ans ... la réponse courte est que cela dépend , il y a beaucoup de documentation complète sur le moment d'utiliser quelle technologie, les deux sont toujours là car ils sont meilleurs dans différentes choses. Réponse longue Google a tout ce que vous devez savoir.
Je pense que cela constitue une bonne question de passerelle. L'OP est l'un des 10 000 chanceux d'aujourd'hui .
Gary Rowe
Selon stackoverflow.com/questions/2810156/concepts-channel-vs-stream - le canal est orienté message tandis que le flux est orienté octet et ne sait probablement pas comment diviser les messages. Autre différence, les canaux stockent les messages contrairement aux flux.
inf3rno

Réponses:

13

Voir cet article de blog Oracle pour un bon aperçu

N'oubliez pas non plus de lire les API NIO.2 de Java 7!

En termes de performances, etc., la réponse est: "cela dépend". Cela dépend des caractéristiques de votre E / S, par exemple sa taille, sa 'forme', qu'il s'agisse d'un réseau ou d'un disque ou en mémoire ou ....

Martijn Verburg
la source
8
Voici le lien vers l'archive: web.archive.org/web/20140528182031/https://blogs.oracle.com/slc/… - C'est pourquoi les réponses ici devraient pouvoir fonctionner sans leurs liens btw
piegames