Junior
Quais são os tipos de fluxos de entrada-saída em Java?
sobes.tech IA
Resposta da IA
Em Java, existem duas categorias principais de fluxos de entrada e saída (java.io):
-
Fluxos de bytes (Byte Streams): Trabalham com bytes brutos. São usados para manipular dados binários (imagens, áudio, objetos serializados).
- Classes principais:
InputStream(para leitura) eOutputStream(para escrita). - Classes derivadas para diferentes fontes/destinos de dados:
- Arquivos:
FileInputStream,FileOutputStream - Arrays de bytes:
ByteArrayInputStream,ByteArrayOutputStream - Buffering:
BufferedInputStream,BufferedOutputStream - Filtragem/transformação:
FilterInputStream,FilterOutputStream(pais deBufferede outros) - Objetos (serialização):
ObjectInputStream,ObjectOutputStream - Entrada/saída de consola:
System.in(InputStream),System.out(PrintStream que estende OutputStream)
- Arquivos:
- Classes principais:
-
Fluxos de caracteres (Character Streams): Trabalham com caracteres Unicode. São usados para manipular dados de texto. Muitas vezes usam internamente fluxos de bytes, convertendo bytes em caracteres com base na codificação.
- Classes principais:
Reader(para leitura) eWriter(para escrita). - Classes derivadas:
- Arquivos:
FileReader,FileWriter - Arrays de caracteres:
CharArrayReader,CharArrayWriter - Strings:
StringReader,StringWriter - Buffering:
BufferedReader,BufferedWriter - Filtragem/transformação:
FilterReader,FilterWriter - Entrada/saída com formatação:
PrintWriter(para escrita),Scanner(para leitura, embora não seja um descendente direto de Reader, é frequentemente usado para entrada de texto) - Entrada/saída de consola:
System.in(viaInputStreamReader),System.out(viaPrintWriter)
- Arquivos:
- Classes principais:
Tabela resumida:
| Categoria | Base de leitura | Base de escrita | Trabalha com | Uso principal |
|---|---|---|---|---|
| Fluxos de bytes | InputStream |
OutputStream |
Bytes | Dados binários, entrada/saída de baixo nível |
| Fluxos de caracteres | Reader |
Writer |
Caracteres (char) | Dados de texto, manipulação de codificações |
Exemplo de uso:
// Leitura de arquivo com fluxo de bytes
import java.io.FileInputStream;
import java.io.IOException;
public class ByteStreamExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("data.bin")) {
int data;
while ((data = fis.read()) != -1) {
// Processar cada byte
System.out.println("Byte lido: " + data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
// Leitura de arquivo com fluxo de caracteres
import java.io.FileReader;
import java.io.IOException;
public class CharStreamExample {
public static void main(String[] args) {
try (FileReader fr = new FileReader("data.txt")) {
int data;
while ((data = fr.read()) != -1) {
// Processar cada caractere
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}