Trabalhando com o sistema de arquivos em Java: guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com o sistema de arquivos em Java: de File a NIO



Trabalhar com o sistema de arquivos é uma das tarefas fundamentais no desenvolvimento em Java. Seja para ler configurações, gravar logs ou processar dados do usuário, saber como interagir corretamente com arquivos e diretórios é necessário para todo desenvolvedor Java. Neste artigo, vamos detalhar as principais classes e abordagens para trabalhar com o sistema de arquivos, começando pelo clássico java.io.File e terminando com o moderno java.nio.file.



Classe File: fundamentos do trabalho com arquivos e pastas



A classe java.io.File existe no Java desde a primeira versão e fornece funcionalidades básicas para trabalhar com caminhos, arquivos e diretórios. Ela não lê nem escreve dados diretamente, mas permite realizar operações de gerenciamento do sistema de arquivos.



Criação de um objeto File e verificação de existência:

import java.io.File;

public class FileExample { public static void main(String[] args) { File file = new File(\"example.txt\"); File dir = new File(\"myFolder\");

System.out.println(\"Arquivo existe: \" + file.exists()); System.out.println(\"É um diretório: \" + dir.isDirectory()); }}


Criação de arquivos e diretórios:

File newFile = new File(\"newFile.txt\");if (newFile.createNewFile()) {    System.out.println(\"Arquivo criado: \" + newFile.getName());} else {    System.out.println(\"Arquivo já existe\");}

File newDir = new File(\"newDirectory\");if (newDir.mkdir()) { System.out.println(\"Pasta criada\");}

// Criar diretórios aninhadosFile nestedDir = new File(\"parent/child/grandchild\");if (nestedDir.mkdirs()) { System.out.println(\"Pastas aninhadas criadas\");}


Obtendo informações sobre o arquivo:

File infoFile = new File(\"example.txt\");System.out.println(\"Caminho absoluto: \" + infoFile.getAbsolutePath());System.out.println(\"Tamanho: \" + infoFile.length() + \" bytes\");System.out.println(\"Última modificação: \" + infoFile.lastModified());System.out.println(\"Pasta pai: \" + infoFile.getParent());


Exclusão e renomeação:

File fileToDelete = new File(\"temp.txt\");if (fileToDelete.delete()) {    System.out.println(\"Arquivo excluído\");}

File oldFile = new File(\"old.txt\");File newFile = new File(\"new.txt\");if (oldFile.renameTo(newFile)) { System.out.println(\"Arquivo renomeado\");}


Leitura e gravação de arquivos: fluxos clássicos de entrada e saída



Para leitura e gravação direta de dados, são usados fluxos de entrada e saída (I/O streams). As principais classes são: FileInputStream, FileOutputStream para dados binários e FileReader, FileWriter para dados textuais.



Gravação de texto em um arquivo com FileWriter:

import java.io.FileWriter;import java.io.IOException;

public class WriteExample { public static void main(String[] args) { try (FileWriter writer = new FileWriter(\"output.txt\")) { writer.write(\"Olá, mundo!\"); writer.write(\"Esta é a segunda linha.\"); System.out.println(\"Gravação realizada com sucesso\"); } catch (IOException e) { System.err.println(\"Erro de gravação: \" + e.getMessage()); } }}


Leitura de texto de um arquivo com FileReader e BufferedReader:

import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;

public class ReadExample { public static void main(String[] args) { try (BufferedReader reader = new BufferedReader(new FileReader(\"output.txt\"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line);

Blogs

Book Recommendations