Qual è la differenza tra I / O basato su canale e I / O basato su stream in java?


21

Qual è la differenza tra l'input basato sul flusso e l'input basato sul canale? L'API java fornisce sia il pacchetto basato su stream nel pacchetto "java.io" sia basato sul canale nel pacchetto "java.nio". Quale dei due ha prestazioni migliori e errori di runtime ridotti?


hai controllato il tag 'nio' wiki su Stack Overflow? "NIO sta per" Nuovo I / O ". È stato introdotto in JDK 1.4 nel pacchetto java.nio. Comprende diversi elementi: ..."
moscerino

1
questa è una buona domanda, 10 anni fa ... la risposta breve è che dipende , c'è molta documentazione estesa su quando usare quale tecnologia, entrambi sono ancora in giro perché sono migliori in cose diverse. Risposta lunga Google ha tutto ciò che devi sapere.

Penso che questo serva come una buona domanda gateway. L'OP è uno dei 10.000 fortunati di oggi .
Gary Rowe,

Secondo stackoverflow.com/questions/2810156/concepts-channel-vs-stream - il canale è orientato ai messaggi mentre lo stream è orientato ai byte e probabilmente non sa come dividere i messaggi. Un'altra differenza, che i canali memorizzano i messaggi mentre i flussi no.
inf3rno,

Risposte:


13

Vedi questo post sul blog Oracle per una buona panoramica

Inoltre, non trascurare di leggere le API NIO.2 di Java 7!

In termini di prestazioni, ecc., La risposta è "dipende". Dipende dalle caratteristiche del tuo I / O, ad es. Dimensioni, forma, rete o disco, memoria o ...


8
Ecco il link all'archivio: web.archive.org/web/20140528182031/https://blogs.oracle.com/slc/… - Ecco perché le risposte qui dovrebbero essere in grado di funzionare senza i loro collegamenti tra loro
piegames
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.