Fluxos de Nó
Fluxos de Byte
Fluxo de Entrada de Bytes do Arquivo
- Todos os fluxos que terminam com
InputStreamleem dados para o programa em formato de bytes - Fluxos que herdam de
InputStreamsão usados para entrada de dados, com unidade de dados em bytes (8 bits)
Métodos básicos:
/**
* Lê um byte de cada vez do fluxo
* Retorna um byte como valor inteiro (0-255)
* Retorna -1 quando o fim do fluxo é atingido
*/
int read() throws IOException
/**
* Lê uma sequência de bytes e armazena em um buffer
* Retorna o número de bytes lidos, ou -1 se o fim do fluxo foi atingido
*/
int read(byte[] buffer) throws IOException
/**
* Lê 'length' bytes
* Armazena em um array de bytes a partir da posição 'offset'
* Retorna o número de bytes lidos, ou -1 se o fim do fluxo foi atingido
*/
int read(byte[] buffer, int offset, int length) throws IOException
/**
* Fecha o fluxo e libera recursos de memória
*/
void close() throws IOException
/**
* Pula 'n' bytes sem lê-los
* Retorna o número real de bytes pulados
*/
long skip(long n) throws IOException
Exemplo:
public class ExemploFluxoEntradaBytes {
public static void main(String[] args) throws IOException {
// 1. Cria FileInputStream com o caminho do arquivo
InputStream fluxoEntrada = new FileInputStream("C:\\dados.txt");
byte[] buffer = new byte[1024];
while (fluxoEntrada.read(buffer) != -1) {
System.out.println(new String(buffer));
}
fluxoEntrada.close();
}
}
Resultado:
test : este é um TEXTO
Fluxo de Saída de Bytes do Arquivo
Métodos básicos:
/**
* Escreve um byte no fluxo de saída
* O byte escrito corresponde aos 8 bits inferiores do parâmetro b
*/
void write(int b) throws IOException
/**
* Escreve todos os bytes de um array no fluxo de saída
*/
void write(byte[] b) throws IOException
/**
* Escreve 'len' bytes de um array a partir da posição 'off'
*/
void write(byte[] b, int off, int len) throws IOException
/**
* Fecha o fluxo e libera recursos de memória
*/
void close() throws IOException
/**
* Força a escrita de todos os dados do buffer para o destino
*/
void flush() throws IOException
Exemplo:
public class ExemploFluxoSaidaBytes {
public static void main(String[] args) {
int dado;
try (FileInputStream entrada = new FileInputStream("C:\\origem.txt");
FileOutputStream saida = new FileOutputStream("C:\\destino.txt")) {
while ((dado = entrada.read()) != -1) {
saida.write(dado);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Fluxos de Caracteres
Fluxo de Entrada de Caracteres do Arquivo
Métodos básicos:
/**
* Lê um caractere e retorna como valor inteiro (0-65535)
* Retorna -1 quando o fim do fluxo é atingido
*/
int read() throws IOException
/**
* Lê uma sequência de caracteres e armazena em um array buffer
* Retorna o número de caracteres lidos, ou -1 se o fim do fluxo foi atingido
*/
int read(char[] buffer) throws IOException
/**
* Lê 'length' caracteres
* Armazena em um array de caracteres a partir da posição 'offset'
* Retorna o número de caracteres lidos, ou -1 se o fim do fluxo foi atingido
*/
int read(char[] buffer, int offset, int length) throws IOException
/**
* Fecha o fluxo e libera recursos de memória
*/
void close() throws IOException
/**
* Pula 'n' caracteres sem lê-los
* Retorna o número real de caracteres pulados
*/
long skip(long n) throws IOException
Exemplo:
public class ExemploFluxoEntradaCaracteres {
public static void main(String[] args) throws IOException {
char[] buffer = new char[2];
FileReader leitorArquivo = new FileReader("C:\\texto.txt");
while ((leitorArquivo.read(buffer)) != -1) {
System.out.println(new String(buffer));
}
}
}
Resultado:
Olá
Mundo!
Fluxo de Saída de Caracteres do Arquivo
Métodos básicos:
/**
* Escreve um caractere no fluxo de saída
* O caractere escrito corresponde aos 16 bits inferiores do parâmetro b
*/
void write(int b) throws IOException
/**
* Escreve todos os caracteres de um array no fluxo de saída
*/
void write(char[] c) throws IOException
/**
* Escreve 'length' caracteres de um array a partir da posição 'offset'
*/
void write(char[] c, int off, int length) throws IOException
/**
* Escreve uma string no fluxo de saída
*/
void write(String str) throws IOException
/**
* Escreve uma parte de uma string no fluxo de saída
*/
void write(String str, int off, int len) throws IOException
/**
* Fecha o fluxo e libera recursos de memória
*/
void close() throws IOException
/**
* Força a escrita de todos os dados do buffer para o destino
*/
void flush() throws IOException
Exemplo:
public class ExemploFluxoSaidaCaracteres {
public static void main(String[] args) throws IOException {
FileReader leitor = new FileReader("C:\\origem.txt");
FileWriter escritor = new FileWriter("C:\\destino.txt");
int caractere;
while ((caractere = leitor.read()) != -1) {
System.out.print((char) caractere);
escritor.write(caractere);
}
leitor.close();
escritor.close();
}
}
Fluxos Bufferizados
Fluxos Bufferizados de Entrada e Saída de Bytes
public class ExemploFluxosBufferizadosBytes {
public static void main(String[] args) throws IOException {
FileInputStream fluxoEntrada = new FileInputStream("C:\\dados.txt");
BufferedInputStream fluxoBufferizadoEntrada = new BufferedInputStream(fluxoEntrada);
FileOutputStream fluxoSaida = new FileOutputStream("C:\\saida.txt");
BufferedOutputStream fluxoBufferizadoSaida = new BufferedOutputStream(fluxoSaida);
int dado;
while ((dado = fluxoBufferizadoEntrada.read()) != -1) {
System.out.print((char) dado);
fluxoBufferizadoSaida.write(dado);
}
fluxoBufferizadoSaida.flush();
fluxoEntrada.close();
fluxoBufferizadoEntrada.close();
fluxoSaida.close();
fluxoBufferizadoSaida.close();
}
}
Fluxos Bufferizados de Entrada e Saída de Caracteres
public class ExemploFluxosBufferizadosCaracteres {
public static void main(String[] args) throws IOException {
FileReader leitor = new FileReader("C:\\texto.txt");
BufferedReader leitorBufferizado = new BufferedReader(leitor);
FileWriter escritor = new FileWriter("C:\\saida.txt");
BufferedWriter escritorBufferizado = new BufferedWriter(escritor);
String linha = leitorBufferizado.readLine();
while (linha != null) {
System.out.print(linha);
escritorBufferizado.write(linha);
linha = leitorBufferizado.readLine();
}
escritorBufferizado.flush();
leitor.close();
leitorBufferizado.close();
escritor.close();
escritorBufferizado.close();
}
}