Introdução ao trabalho com o sistema de arquivos em Java
Trabalhar com o sistema de arquivos é uma das tarefas fundamentais em qualquer linguagem de programação. Em Java, existe um conjunto de ferramentas poderoso e flexível para esse fim. Independentemente de você estar escrevendo um simples aplicativo de console ou um serviço web complexo, a capacidade de gerenciar arquivos e pastas é uma habilidade essencial para qualquer desenvolvedor.
Neste artigo, abordaremos as operações básicas com o sistema de arquivos em Java. Você aprenderá como criar, ler, escrever e excluir arquivos, além de trabalhar com diretórios. O material é voltado para iniciantes, portanto, todos os exemplos serão simples e fáceis de entender.
O Java oferece duas abordagens principais para trabalhar com arquivos: o pacote clássico java.io (desde o Java 1.0) e o pacote moderno java.nio.file (introduzido no Java 7). Abordaremos ambos, mas o foco principal será no NIO, por ser mais eficiente e prático.
1. Classe File: a base para trabalhar com arquivos e pastas
A classe java.io.File é a forma mais antiga e simples de interagir com o sistema de arquivos. Ela representa uma abstração de um caminho para um arquivo ou diretório, mas não armazena o conteúdo do arquivo. Com ela, é possível realizar operações básicas: verificar existência, criar, renomear e excluir objetos.
Criação de um objeto File e verificação de existência
Para começar, é necessário criar uma instância da classe File, passando o caminho no construtor:
import java.io.File;
public class FileExample { public static void main(String[] args) { // Cria um objeto File para o arquivo "example.txt" no diretório atual File myFile = new File("example.txt");
// Verifica se o arquivo existe if (myFile.exists()) { System.out.println("Arquivo existe!"); System.out.println("Caminho: " + myFile.getAbsolutePath()); System.out.println("Tamanho: " + myFile.length() + " bytes"); } else { System.out.println("Arquivo não encontrado."); } }}Criação de arquivos e diretórios
Os métodos createNewFile() e mkdir() permitem criar arquivos e pastas, respectivamente:
import java.io.File;import java.io.IOException;
public class CreateFiles { public static void main(String[] args) { // Criação de arquivo File file = new File("newFile.txt"); try { if (file.createNewFile()) { System.out.println("Arquivo criado: " + file.getName()); } else { System.out.println("O arquivo já existe."); } } catch (IOException e) { System.out.println("Erro ao criar arquivo: " + e.getMessage()); }
// Criação de diretório File dir = new File("myDirectory"); if (dir.mkdir()) { System.out.println("Diretório criado: " + dir.getName()); } else { System.out.println("Não foi possível criar o diretório (talvez ele já exista)."); }
// Criação de diretórios aninhados (mkdirs) File nestedDir = new File("parent/child/grandchild"); if (nestedDir.mkdirs()) { System.out.println("Diretórios aninhados criados."); } }}Renomeação e exclusão
Os métodos renameTo() e delete() permitem gerenciar nomes e excluir arquivos:
import java.io.File;
public class RenameDelete { public static void main(String[] args) { File oldFile = new File("newFile.txt"); File newFile = new File("renamedFile.txt");
// Renomeação if (oldFile.renameTo(newFile)) { System.out.println("Arquivo renomeado para " + newFile.getName()); } else { System.out.println("Não foi possível renomear.");