Alguém me explica o que é InputStream
e o que OutputStream
é?
Estou confuso sobre os casos de uso para ambos InputStream
e OutputStream
.
Se você também pudesse incluir um trecho de código para acompanhar sua explicação, isso seria ótimo. Obrigado!
java
io
inputstream
outputstream
boêmio
fonte
fonte
InputStream é usado para leitura, OutputStream para gravação. Eles são conectados como decoradores um ao outro, para que você possa ler / gravar todos os tipos diferentes de dados de todos os tipos diferentes de fontes.
Por exemplo, você pode gravar dados primitivos em um arquivo:
Para ler o conteúdo escrito:
Você pode usar outros tipos de fluxos para aprimorar a leitura / gravação. Por exemplo, você pode introduzir um buffer para eficiência:
Você pode gravar outros dados, como objetos:
Você pode ler de outras fontes de entrada diferentes:
Para a maioria dos fluxos de entrada, também existe um fluxo de saída. Você pode definir seus próprios fluxos para ler / escrever coisas especiais e existem fluxos complexos para ler coisas complexas (por exemplo, existem fluxos para leitura / gravação no formato ZIP).
fonte
No Tutorial Java :
Um fluxo é uma sequência de dados.
Um programa usa um fluxo de entrada para ler dados de uma fonte, um item de cada vez:
Um programa usa um fluxo de saída para gravar dados em um destino, um item de cada vez:
Código de exemplo do tutorial da Oracle:
Este byte usos programa de fluxos para copiar xanadu.txt arquivo para outagain.txt , escrevendo um byte de cada vez
Dê uma olhada nesta pergunta SE para saber mais detalhes sobre fluxos de caracteres avançados, que são wrappers sobre os fluxos de bytes:
fluxo de bytes e fluxo de caracteres
fonte
você lê de um InputStream e grava em um OutputStream.
por exemplo, suponha que você deseja copiar um arquivo. Você criaria um FileInputStream para ler o arquivo de origem e um FileOutputStream para gravar no novo arquivo.
Se seus dados forem um fluxo de caracteres, você poderá usar um FileReader em vez de um InputStream e um FileWriter em vez de um OutputStream, se preferir.
fonte
close
sempreflush
es, então não.OutputStream é uma classe abstrata que representa a saída de gravação. Existem muitas classes OutputStream diferentes, e elas gravam em determinadas coisas (como a tela, arquivos, matrizes de bytes ou conexões de rede, etc.). As classes InputStream acessam as mesmas coisas, mas elas lêem dados delas.
Aqui está um bom exemplo básico do uso de FileOutputStream e FileInputStream para gravar dados em um arquivo e, em seguida, lê-los novamente.
fonte
O fluxo Java é um fluxo de dados de uma origem para um destino. A origem ou destino pode ser um disco, memória, soquete ou outros programas. Os dados podem ser bytes, caracteres ou objetos. O mesmo se aplica aos fluxos de C # ou C ++. Uma boa metáfora para os fluxos Java é a água que escorre de uma torneira para a banheira e depois para a drenagem.
Os dados representam a parte estática do fluxo; os métodos de leitura e gravação são a parte dinâmica do fluxo.
InputStream
representa um fluxo de dados da fonte,OutputStream
representa um fluxo de dados para o destino. Finalmente,InputStream
eOutputStream
são abstrações sobre o acesso de baixo nível aos dados, tais como ponteiros de arquivo C.fonte
Fluxo : em termos leigos, fluxo é dados, o fluxo mais genérico é a representação binária de dados.
Fluxo de entrada : se você estiver lendo dados de um arquivo ou de qualquer outra fonte, o fluxo usado é o fluxo de entrada. Em termos mais simples, o fluxo de entrada atua como um canal para ler dados.
Fluxo de saída : se você deseja ler e processar dados de uma fonte (arquivo etc.), primeiro é necessário salvar os dados, o meio para armazenar dados é o fluxo de saída.
fonte
Um fluxo de saída geralmente está relacionado a algum destino de dados, como um arquivo ou uma rede, etc. No fluxo de saída java é um destino em que os dados são eventualmente gravados e terminam
fonte