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.