Arquivos e I/O
Java oferece uma ampla gama de funcionalidades para trabalhar com arquivos e realizar operações de Entrada/Saída (I/O). Essas capacidades são essenciais para muitas aplicações, desde leitura e gravação de dados até processamento de arquivos. Neste artigo, vamos explorar como manipular arquivos e realizar operações de Entrada/Saída em Java, entender as principais classes e métodos envolvidos e examinar exemplos práticos para ilustrar esses conceitos.
Leitura e Escrita de Arquivos em Java
Leitura de Arquivos
Para ler dados de um arquivo em Java, você pode usar a classe FileInputStream
em conjunto com classes de leitura de alto nível, como BufferedReader
. Aqui está um exemplo básico de leitura de um arquivo:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class LeituraDeArquivo {
public static void main(String[] args) {
String nomeArquivo = "arquivo.txt";
try (BufferedReader reader = new BufferedReader(new FileReader(nomeArquivo))) {
String linha;
while ((linha = reader.readLine()) != null) {
System.out.println(linha);
}
} catch (IOException e) {
System.err.println("Erro ao ler o arquivo: " + e.getMessage());
}
}
}
Neste exemplo, o programa lê o conteúdo do arquivo arquivo.txt
linha por linha e imprime no console.
Escrita de Arquivos
Para escrever dados em um arquivo em Java, você pode usar a classe FileOutputStream
em conjunto com classes de escrita de alto nível, como BufferedWriter
. Aqui está um exemplo básico de escrita em um arquivo:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class EscritaEmArquivo {
public static void main(String[] args) {
String nomeArquivo = "saida.txt";
try (BufferedWriter writer = new BufferedWriter(new FileWriter(nomeArquivo))) {
writer.write("Hello, World!");
} catch (IOException e) {
System.err.println("Erro ao escrever no arquivo: " + e.getMessage());
}
}
}
Neste exemplo, o programa escreve a string “Hello, World!” no arquivo saida.txt
.
Operações de Entrada/Saída com Streams
As classes InputStream
e OutputStream
são usadas para operações de entrada e saída de bytes em Java, enquanto as classes Reader
e Writer
são usadas para operações de entrada e saída de caracteres. Você pode trabalhar com diferentes tipos de streams e readers/writers dependendo do tipo de dados que está manipulando.
Exemplo de Leitura com FileInputStream
e BufferedInputStream
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class LeituraComStreams {
public static void main(String[] args) {
String nomeArquivo = "arquivo.bin";
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(nomeArquivo))) {
int byteLido;
while ((byteLido = bis.read()) != -1) {
System.out.print((char) byteLido);
}
} catch (IOException e) {
System.err.println("Erro ao ler o arquivo: " + e.getMessage());
}
}
}
Neste exemplo, o programa lê um arquivo binário (arquivo.bin
) usando FileInputStream
e BufferedInputStream
.
Exemplo de Escrita com FileOutputStream
e BufferedOutputStream
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class EscritaComStreams {
public static void main(String[] args) {
String nomeArquivo = "saida.bin";
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(nomeArquivo))) {
String mensagem = "Dados a serem escritos no arquivo.";
byte[] bytes = mensagem.getBytes();
bos.write(bytes);
} catch (IOException e) {
System.err.println("Erro ao escrever no arquivo: " + e.getMessage());
}
}
}
Neste exemplo, o programa escreve uma mensagem em um arquivo binário (saida.bin
) usando FileOutputStream
e BufferedOutputStream
.
Manipular arquivos e realizar operações de Entrada/Saída em Java é essencial para muitos tipos de aplicativos. Conhecendo as classes fundamentais, como FileInputStream
, FileOutputStream
, BufferedReader
, BufferedWriter
, InputStreamReader
, OutputStreamWriter
, entre outras, você pode criar programas poderosos e flexíveis para lidar com dados de entrada e saída.