Trabalhando com o sistema de arquivos em Java: na prática
\n\nNo desenvolvimento moderno em Java, trabalhar com o sistema de arquivos é uma das tarefas fundamentais. Seja para salvar configurações, processar logs ou carregar dados do usuário, a capacidade de interagir corretamente com arquivos e diretórios é necessária para todo desenvolvedor. Neste artigo, abordaremos os aspectos práticos de trabalhar com o sistema de arquivos em Java, usando tanto a abordagem clássica (classe File) quanto a API moderna NIO.2 (Path, Files).
O material é voltado para profissionais: você obterá exemplos de código prontos que podem ser usados imediatamente em seus projetos. Abordaremos criação, leitura, escrita, cópia e exclusão de arquivos, bem como o trabalho com diretórios.
\n\nAbordagem clássica: classe File
\n\nAntes do Java 7, a principal ferramenta para trabalhar com o sistema de arquivos era a classe java.io.File. Apesar de ser considerada obsoleta, ela ainda pode ser encontrada em projetos legados. Vamos analisar as operações principais.
Criação de arquivo:
\nimport java.io.File;\nimport java.io.IOException;\n\npublic class FileExample {\n public static void main(String[] args) {\n File file = new File("example.txt");\n try {\n if (file.createNewFile()) {\n System.out.println("Arquivo criado: " + file.getName());\n } else {\n System.out.println("O arquivo já existe.");\n }\n } catch (IOException e) {\n System.out.println("Erro ao criar arquivo: " + e.getMessage());\n }\n }\n}\n\nVerificação de existência e propriedades do arquivo:
\nFile file = new File("example.txt");\nif (file.exists()) {\n System.out.println("O arquivo existe");\n System.out.println("Caminho absoluto: " + file.getAbsolutePath());\n System.out.println("Tamanho: " + file.length() + " bytes");\n System.out.println("Legível: " + file.canRead());\n System.out.println("Gravável: " + file.canWrite());\n}\n\n- \n
exists()— verifica se o arquivo ou diretório existe. \n isFile()— verifica se o objeto é um arquivo. \n isDirectory()— verifica se o objeto é um diretório. \n length()— retorna o tamanho do arquivo em bytes. \n delete()— exclui o arquivo ou diretório vazio. \n
A desvantagem da classe File é a falta de suporte para links simbólicos, metadados e tratamento limitado de exceções. Para novos projetos, recomenda-se usar NIO.2.
Abordagem moderna: NIO.2 (Path e Files)
\n\nA partir do Java 7, o pacote java.nio.file foi incluído no JDK, fornecendo uma API mais flexível e eficiente. As principais classes são: Path (representa o caminho para um arquivo ou diretório) e Files (contém métodos estáticos para operações).
Criação de arquivo com Files:
\nimport java.nio.file.Files;\nimport java.nio.file.Path;\nimport java.nio.file.Paths;\nimport java.io.IOException;\n\npublic class NioExample {\n public static void main(String[] args) {\n Path path = Paths.get("nio_example.txt");\n try {\n Files.createFile(path);\n System.out.println("Arquivo criado: " + path.toAbsolutePath());\n } catch (IOException e) {\n System.out.println("Erro: " + e.getMessage());\n }\n }\n}\n\nCriação de diretórios:
\nPath dirPath = Paths.get("myDir/subDir");\ntry {\n Files.createDirectories(dirPath); // cria todos os diretórios pai ausentes\n System.out.println("Diretório criado: " + dirPath);\n} catch (IOException e) {\n e.printStackTrace();\n}\n\nLeitura e escrita de arquivos:
\nA maneira mais simples de ler