Qual é a diferença entre E / S baseada em canal e E / S baseada em fluxo em java?

21

Qual é a diferença entre a entrada baseada em fluxo e a entrada baseada em canal? A API java fornece tanto o pacote baseado em fluxo "java.io" quanto o canal "pacote java.nio". Qual dos dois tem melhor desempenho e erros reduzidos de tempo de execução?

Pranit Bauva
fonte
você verificou o wiki da tag 'nio' no Stack Overflow? "NIO significa 'New I / O'. Foi introduzido no JDK 1.4 no pacote java.nio. Ele inclui vários elementos: ..."
gnat
1
essa é uma boa pergunta, há 10 anos ... a resposta curta é que depende , há uma abundância de documentação extensa sobre quando usar qual tecnologia, ambas ainda existem, porque elas são melhores em coisas diferentes. Resposta longa O Google tem tudo o que você precisa saber.
Eu acho que isso serve como uma boa pergunta de gateway. O OP é um dos 10.000 sortudos de hoje .
Gary Rowe
De acordo com stackoverflow.com/questions/2810156/concepts-channel-vs-stream - o canal é orientado a mensagens enquanto o fluxo é orientado a bytes e, provavelmente, não sabe como dividir as mensagens. Outra diferença é que os canais armazenam mensagens enquanto os fluxos não.
Inf3rno

Respostas:

13

Consulte esta postagem do blog da Oracle para obter uma boa visão geral

Também não deixe de ler as APIs NIO.2 do Java 7!

Em termos de desempenho, etc, bem, a resposta é "depende". Depende das características da sua E / S, por exemplo, tamanho, forma, rede ou disco, memória ou ....

Martijn Verburg
fonte
8
Aqui está o link para o arquivo: web.archive.org/web/20140528182031/https://blogs.oracle.com/slc/… - É por isso que as respostas aqui devem poder funcionar sem seus links btw
piegames