Junior — Middle
Qual é a diferença entre fluxos que trabalham com dados de bytes e aqueles que usam o sistema de ficheiros?
sobes.tech IA
Resposta da IA
Em Java, os flux (Streams) existem em diferentes tipos, e é importante compreender as diferenças entre os fluxos que trabalham com dados em bytes e aqueles que usam o sistema de ficheiros.
-
Fluxos de dados em bytes (InputStream/OutputStream):
- Trabalham com bytes brutos.
- São usados para ler e escrever dados binários, como imagens, áudio, vídeo ou qualquer ficheiro em formato binário.
- Exemplos:
FileInputStream,BufferedInputStream,ByteArrayInputStream.
-
Fluxos que usam o sistema de ficheiros (Reader/Writer):
- Trabalham com caracteres (dados de texto).
- Destinados a ler e escrever ficheiros de texto considerando a codificação.
- Exemplos:
FileReader,BufferedReader,FileWriter.
A principal diferença é que os fluxos de bytes trabalham com bytes não processados, enquanto que os fluxos de caracteres trabalham com caracteres, o que facilita o trabalho com texto e leva em conta as codificações.
Exemplo de leitura de ficheiro com fluxo de bytes:
try (FileInputStream fis = new FileInputStream("file.bin")) {
int data;
while ((data = fis.read()) != -1) {
// processamento do byte data
}
}
Exemplo de leitura de ficheiro com fluxo de caracteres:
try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
// processamento da linha line
}
}
Assim, a escolha do fluxo depende do tipo de dados e da tarefa.