1. Pathaula
Se você quiser escrever um programa que faça algo com arquivos em disco, isso é muito fácil. Java tem muitas classes que ajudam você a trabalhar com os próprios arquivos e seus conteúdos.
As primeiras versões do Java usavam classes como Filee FileInputStreampara trabalhar com arquivos. No entanto, a Fileclasse agora está obsoleta e não é recomendada para uso. Claro, você ainda pode encontrá-lo no código, parâmetros de método ou construtores de classe.
Desde o início, começaremos a aprender como trabalhar com arquivos usando a Pathclasse. Pathé a classe que substituiu File. É mais seguro e eficiente.
Pathaula
Tecnicamente, Pathnão é uma classe — é uma interface. Isso é feito para permitir a escrita de um descendente da Pathclasse para cada sistema operacional (e sistema de arquivos).
O Windows tem um padrão para escrever caminhos de arquivo e o Linux tem outro. Claro, existem muitos outros sistemas operacionais no mundo e cada um tem seu próprio padrão.
É por isso que a Pathinterface é usada em todos os métodos que trabalham com arquivos, embora na realidade o trabalho seja feito por meio de suas classes descendentes: WindowsPath, UnixPath, ...
Criando um Pathobjeto
Para criar um Pathobjeto (que na verdade será um objeto da WindowsPathclasse descendente), você precisa usar uma declaração como esta:
Path name = Path.of(path);
Onde nameé o nome de uma Pathvariável e pathé o caminho para o arquivo (ou diretório), incluindo o nome do arquivo (ou diretório). E ofé um método estático da Pathclasse.
O of()método é usado para criar WindowsPathobjetos se o programa estiver sendo executado no Windows. Se o programa for executado no Linux, os UnixPathobjetos serão criados. Você não pode criar um Pathobjeto usando código como .new Path()
Exemplos:
| Código | Observação |
|---|---|
|
Caminho para o arquivo |
|
Caminho para o diretório |
O arquivo (ou diretório) não precisa existir para que um Pathobjeto válido exista. Talvez você queira apenas criar um arquivo... Um Pathobjeto é como uma sopa String: ele não está vinculado a um arquivo específico no disco — apenas armazena um determinado caminho no disco. É isso.
2. Métodos do Pathtipo
A Pathinterface tem alguns métodos interessantes. Os mais interessantes são apresentados na tabela abaixo.
| Método | Descrição |
|---|---|
|
Retorna o diretório pai |
|
Retorna o nome do arquivo sem o diretório |
|
Retorna o diretório raiz de um caminho |
|
Verifica se o caminho atual é absoluto |
|
Converte o caminho para absoluto |
|
Remove curingas em um nome de diretório. |
|
Constrói um novo caminho absoluto a partir de caminhos absolutos e relativos. |
|
Obtém um caminho relativo de dois caminhos absolutos. |
|
Verifica se o caminho atual começa com um determinado caminho |
|
Verifica se o caminho atual termina com um determinado caminho |
|
Divide o caminho em partes usando /como delimitador. Retorna o número de peças. |
|
Divide o caminho em partes usando /como delimitador. Retorna uma parte por seu índice. |
|
Divide o caminho em partes usando /como delimitador. Retorna o subcaminho que corresponde ao intervalo fornecido. |
|
Converte um Pathobjeto em um Fileobjeto obsoleto |
|
Converte um Pathobjeto em um URIobjeto |
Abaixo está uma breve descrição dos métodos existentes.
3. Dividindo um caminho em partes
O getParent()método retorna o caminho que aponta para o diretório pai do caminho atual. Independentemente de este caminho ser um diretório ou um arquivo:
| Código | Valor |
|---|---|
|
|
|
|
|
|
O getFileName()método retorna um único nome de arquivo (ou diretório) — o que vier depois do último delimitador:
| Código | Valor |
|---|---|
|
|
|
|
|
|
O getRoot()método retorna o caminho para o diretório raiz:
| Código | Valor |
|---|---|
|
|
4. Caminhos absolutos e relativos
Existem dois tipos de caminhos: absolutos e relativos. Um caminho absoluto começa no diretório raiz. Para Windows, pode ser a c:\pasta; para Linux — o /diretório
Um caminho relativo é significativo em relação a algum diretório. Ou seja, é como o fim da estrada, mas sem o começo. Você pode transformar um caminho relativo em um caminho absoluto e vice-versa
boolean isAbsolute()método
O método verifica se o caminho atual é absoluto
| Código | Valor |
|---|---|
|
|
|
|
Path toAbsolutePath()método
Converte o caminho em absoluto. Se necessário, adicione o diretório de trabalho atual a ele:
| Código | Valor |
|---|---|
|
|
|
|
Path normalize()método
No caminho, em vez de um nome de diretório, você pode escrever "..", o que significa voltar um diretório . A normalização elimina essas coisas. Exemplos:
| Código | Valor |
|---|---|
|
|
|
|
Path relativize(Path other)método
O relativize()método permite construir as "diferenças entre caminhos": um caminho relativo a outro
| Código | Valor |
|---|---|
|
|
|
|
|
Exceção de argumento ilegal: os dois caminhos têm uma "raiz" diferente (discos diferentes) |
Path resolve(Path other)método
O resolve()método faz o contrário de relativize(): ele constrói um novo caminho absoluto a partir de um caminho absoluto e um relativo.
| Código | Valor |
|---|---|
|
|
|
|
toFile()método
O método retorna um objeto obsoleto Fileque armazena o mesmo caminho de arquivo que o Pathobjeto.
toURI()método
O método converte o caminho em um URI padrão e retorna um objeto que contém o caminho para o arquivo:
| Caminho para o arquivo | URI para o arquivo |
|---|---|
|
|
GO TO FULL VERSION