Path: Representação de Locais de Arquivos
Crie objetos Path, resolva e relativize caminhos e manipule componentes de caminhos.
Path: Representação de Locais de Arquivos é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.
Introdução a Caminhos
A interface java.nio.file.Path representa a localização de um arquivo ou diretório no sistema de arquivos. Ela substitui a classe legada java.io.File por uma API mais completa e independente de plataforma.
import java.nio.file.*;
Path p1 = Path.of("/home/user/documents/report.txt");
Path p2 = Paths.get("/home", "user", "documents", "report.txt");
System.out.println(p1); // /home/user/documents/report.txt
System.out.println(p1.equals(p2)); // trueComponentes de um Caminho
Extraia os componentes de um caminho:
Path path = Path.of("/home/user/docs/report.txt");
System.out.println(path.getFileName()); // report.txt
System.out.println(path.getParent()); // /home/user/docs
System.out.println(path.getRoot()); // /
System.out.println(path.getNameCount()); // 4
System.out.println(path.getName(0)); // home
System.out.println(path.getName(3)); // report.txtCaminhos Relativos e Absolutos
Um caminho pode ser absoluto (começa na raiz) ou relativo (a partir do diretório atual). Use isAbsolute() para verificar e toAbsolutePath() para resolver um caminho relativo em relação ao diretório de trabalho atual.
Path rel = Path.of("docs/report.txt");
Path abs = Path.of("/home/user/docs/report.txt");
System.out.println(rel.isAbsolute()); // false
System.out.println(abs.isAbsolute()); // true
Path resolved = rel.toAbsolutePath(); // resolves against CWD
System.out.println(resolved);resolve: Combinando Caminhos
resolve(other) anexa outro caminho. Se other for absoluto, ele substituirá completamente o caminho atual.
Path base = Path.of("/home/user");
Path docs = base.resolve("documents");
Path file = docs.resolve("report.txt");
System.out.println(file); // /home/user/documents/report.txt
// Resolving an absolute path replaces:
Path abs = base.resolve(Path.of("/etc/config"));
System.out.println(abs); // /etc/configrelativize: Calculando Caminhos Relativos
relativize(other) calcula o caminho relativo deste caminho até other:
Path from = Path.of("/home/user");
Path to = Path.of("/home/user/docs/report.txt");
Path rel = from.relativize(to);
System.out.println(rel); // docs/report.txt
// Verify:
System.out.println(from.resolve(rel)); // /home/user/docs/report.txtnormalize: Removendo Redundâncias
normalize() remove os segmentos . e .. de um caminho:
Path messy = Path.of("/home/user/../user/./docs/./report.txt");
Path clean = messy.normalize();
System.out.println(clean); // /home/user/docs/report.txtstartsWith e endsWith
Verifique as relações de prefixo e sufixo entre caminhos:
Path p = Path.of("/home/user/docs/report.txt");
System.out.println(p.startsWith("/home/user")); // true
System.out.println(p.startsWith("/home/other")); // false
System.out.println(p.endsWith("report.txt")); // true
System.out.println(p.endsWith("docs/report.txt")); // trueConvertendo para um Arquivo e uma URI
Converta um caminho para a classe legada de arquivo ou para uma URI quando necessário:
Path path = Path.of("/home/user/report.txt");
java.io.File file = path.toFile();
System.out.println(file.exists()); // depends on filesystem
java.net.URI uri = path.toUri();
System.out.println(uri); // file:///home/user/report.txtCaminhos em Diferentes Plataformas
Path.of() usa o separador da plataforma. No Windows, os caminhos usam barra invertida; no Unix, usam barra normal. A API lida com isso de forma transparente.
// Portable path construction (works on all platforms):
Path config = Path.of("config", "app", "settings.json");
// On Unix: config/app/settings.json
// On Windows: config\app\settings.json
System.out.println(config);Iterando pelos Elementos de um Caminho
Use um laço for-each ou iterator() para iterar pelos elementos de nome individuais:
Path path = Path.of("/home/user/docs/report.txt");
for (Path element : path) {
System.out.println(element); // home, user, docs, report.txt
}
// Note: root ("/") is not included in iterationsubpath: Extraindo um Trecho
subpath(begin, end) retorna um caminho relativo para um intervalo de elementos de nome:
Path p = Path.of("/home/user/docs/report.txt");
// Indices: home=0, user=1, docs=2, report.txt=3
System.out.println(p.subpath(1, 3)); // user/docs
System.out.println(p.subpath(0, 2)); // home/userVerificação Rápida
Dado Path.of("/home/user").resolve("docs/file.txt"), qual é o resultado?
Recapitulação: API de Caminhos
Principais conclusões:
- Path.of() / Paths.get() criam instâncias de caminho
- getFileName, getParent, getRoot, getName, getNameCount para obter componentes
- resolve() anexa; relativize() calcula o caminho relativo; normalize() remove ./ e ../
- startsWith/endsWith para verificar prefixos e sufixos
- Independente de plataforma — o separador é tratado automaticamente
Perguntas Frequentes
A aula “Path: Representação de Locais de Arquivos” é grátis?
Sim — o texto completo de “Path: Representação de Locais de Arquivos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.
O que vou aprender em “Path: Representação de Locais de Arquivos”?
Crie objetos Path, resolva e relativize caminhos e manipule componentes de caminhos. Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Java Academy?
Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Path: Representação de Locais de Arquivos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Java Academy?
Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Path: Representação de Locais de Arquivos
- Utilitário Files: Ler, Escrever, Copiar e Mover
- Percurso de Árvores de Diretórios com Files.walk
- WatchService: Monitoramento de Alterações em Arquivos