Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Informática para Internet / Desenvolvimento Desktop / Aula
Um objeto da classe Path também dispõe de métodos, de forma que você possa obter informações acerca do caminho especificado. Os diretórios, por exemplo, são armazenados em sequência. O mais alto diretório na estrutura é referenciado pelo índice 0 (zero), enquanto que o mais baixo elemento é referenciado pelo índice (n – 1), onde n é o número de elementos no caminho (Path). Os métodos fornecem tanto elementos individuais quanto subsequências do Path, utilizando esses índices.
Os exemplos desta aula usarão a estrutura de diretórios mostrada na Figura 1. O trecho de código a seguir define uma instância de Path e, então, invoca vários métodos para obter informação sobre o path.
package pack;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Principal {
public static void main(String[] args) {
Path path = Paths.get("C:\\Users\\UsuarioIMD\\Documents\\NetBeansProjects\\arquivo.txt");
System.out.format("toString: %s%n", path.toString());
System.out.format("getFileName: %s%n", path.getFileName());
System.out.format("getName(0): %s%n", path.getName(0));
System.out.format("getNameCount: %d%n", path.getNameCount());
System.out.format("subpath(0,2): %s%n", path.subpath(0, 2));
System.out.format("getParent: %s%n", path.getParent());
System.out.format("getRoot: %s%n", path.getRoot());
}
}
A saída desta execução deve ser:
toString: C:\Users\UsuarioIMD\Documents\NetBeansProjects\arquivo.txt
getFileName: arquivo.txt
getName(0): Users
getNameCount: 5
subpath(0,2): Users\UsuarioIMD
getParent: C:\Users\UsuarioIMD\Documents\NetBeansProjects
getRoot: C:\
A seguir, um pequeno comentário sobre cada método:
Existem três métodos à disposição para se converter um Path. Se é necessário converter um Path para uma string que o determinado arquivo possa ser aberto em um navegador, deve-se usar o método toUri. Por exemplo:
Path p1 = Paths.get("/home/logfile");
System.out.format("%s%n", p1.toUri());
Cujo resultado da conversão é:
file:///home/logfile
O método toAbsolutePath converte um Path para seu correspondente caminho absoluto (a partir da raiz). Se o Path já for absoluto, ele retorna o mesmo objeto. Esse método é particularmente útil para tratar nomes de arquivos digitados por usuários. Por exemplo:
if (args.length < 1) {
System.out.println("usage: FileTest file");
System.exit(-1);
}
// Converte a string de entrada para um objeto Path.
Path inputPath = Paths.get(args[0]);
Path fullPath = inputPath.toAbsolutePath();
O método toAbsolutePath converte a entrada do usuário e retorna um Path que pode ser consultado, como o exemplo anterior, e retornar valores bastante úteis. O arquivo não precisa existir para que esse método funcione. O método toRealPath retorna o caminho real de um arquivo existente e o método executa várias operações em uma:
Esse método dispara uma exceção se o arquivo não existe ou não pode ser acessado. Pode-se capturar a exceção quando se deseja manipular esses casos. Por exemplo:
try {
Path fp = path.toRealPath(true);
} catch (NoSuchFileException x) {
System.err.format("%s: no such" + " file or directory%n", path);
// Caso o arquivo não exista.
} catch (IOException x) {
System.err.format("%s%n", x);
// Outro erro qualquer.
}
Versão 5.3 - Todos os Direitos reservados