1. Pathclase
Si desea escribir un programa que haga algo con archivos en el disco, eso es bastante fácil. Java tiene muchas clases que lo ayudan a trabajar tanto con los archivos como con su contenido.
Las primeras versiones de Java usaban clases como Filey FileInputStreampara trabajar con archivos. Sin embargo, la Fileclase ahora está en desuso y no se recomienda su uso. Por supuesto, aún puede encontrarlo en el código, los parámetros del método o los constructores de clases.
Desde el principio, comenzaremos a aprender cómo trabajar con archivos usando la Pathclase. Pathes la clase que reemplazó a File. Es más seguro y más eficiente.
Pathclase
Técnicamente, Pathno es una clase, es una interfaz. Esto se hace para permitir la escritura de un descendiente de la Pathclase para cada sistema operativo (y sistema de archivos).
Windows tiene un estándar para escribir rutas de archivos y Linux tiene otro. Por supuesto, hay muchos otros sistemas operativos en el mundo y cada uno tiene su propio estándar.
Es por eso que la Pathinterfaz se usa en todas partes en los métodos que trabajan con archivos, aunque en realidad el trabajo ocurre a través de sus clases descendientes: WindowsPath, UnixPath, ...
Creando un Pathobjeto
Para crear un Pathobjeto (que en realidad será un objeto de la WindowsPathclase descendiente), debe usar una declaración como esta:
Path name = Path.of(path);
Donde namees el nombre de una Pathvariable y pathes la ruta al archivo (o directorio) incluido el nombre del archivo (o directorio). Y ofes un método estático de la Pathclase.
El of()método se utiliza para crear WindowsPathobjetos si el programa se ejecuta en Windows. Si el programa se ejecuta en Linux, se UnixPathcrean objetos. No puede crear un Pathobjeto usando código como .new Path()
Ejemplos:
| Código | Nota |
|---|---|
|
Ruta al archivo |
|
Ruta al directorio |
El archivo (o directorio) no necesita existir para que Pathexista un objeto válido. Tal vez solo desee crear un archivo... Un Pathobjeto es como una mejora String: no está vinculado a un archivo específico en el disco, solo almacena una determinada ruta en el disco. Eso es todo.
2. Métodos del Pathtipo
La Pathinterfaz tiene bastantes métodos interesantes. Los más interesantes se presentan en la siguiente tabla.
| Método | Descripción |
|---|---|
|
Devuelve el directorio principal |
|
Devuelve el nombre del archivo sin el directorio. |
|
Devuelve el directorio raíz de una ruta |
|
Comprueba si la ruta actual es absoluta |
|
Convierte la ruta en absoluta |
|
Elimina los comodines en un nombre de directorio. |
|
Construye una nueva ruta absoluta a partir de rutas absolutas y relativas. |
|
Obtiene una ruta relativa de dos rutas absolutas. |
|
Comprueba si la ruta actual comienza con una ruta dada |
|
Comprueba si la ruta actual termina con una ruta dada |
|
Divide la ruta en partes utilizando /como delimitador. Devuelve el número de partes. |
|
Divide la ruta en partes utilizando /como delimitador. Devuelve una parte por su índice. |
|
Divide la ruta en partes utilizando /como delimitador. Devuelve el subcamino que corresponde al intervalo dado. |
|
Convierte un objeto en un objeto PathobsoletoFile |
|
Convierte un Pathobjeto en un URIobjeto. |
A continuación se muestra una breve descripción de los métodos existentes.
3. Dividir un camino en partes
El getParent()método devuelve la ruta que apunta al directorio principal de la ruta actual. Independientemente de si esta ruta es un directorio o un archivo:
| Código | Valor |
|---|---|
|
|
|
|
|
|
El getFileName()método devuelve un solo nombre de archivo (o directorio), lo que viene después del último delimitador:
| Código | Valor |
|---|---|
|
|
|
|
|
|
El getRoot()método devuelve la ruta al directorio raíz:
| Código | Valor |
|---|---|
|
|
4. Caminos absolutos y relativos
Hay dos tipos de caminos: absolutos y relativos. Una ruta absoluta comienza desde el directorio raíz. Para Windows, esta podría ser la c:\carpeta; para Linux — el /directorio
Una ruta relativa es significativa en relación con algún directorio. Es decir, es como el final del camino, pero sin el principio. Puede convertir una ruta relativa en una ruta absoluta y viceversa
boolean isAbsolute()método
El método comprueba si la ruta actual es absoluta
| Código | Valor |
|---|---|
|
|
|
|
Path toAbsolutePath()método
Convierte la ruta en absoluta. Si es necesario, agrega el directorio de trabajo actual:
| Código | Valor |
|---|---|
|
|
|
|
Path normalize()método
En la ruta, en lugar de un nombre de directorio, puede escribir "..", lo que significa retroceder un directorio . La normalización elimina estas cosas. Ejemplos:
| Código | Valor |
|---|---|
|
|
|
|
Path relativize(Path other)método
El relativize()método le permite construir las "diferencias entre caminos": un camino relativo a otro
| Código | Valor |
|---|---|
|
|
|
|
|
Argumento de excepción ilegal: las dos rutas tienen una "raíz" diferente (discos diferentes) |
Path resolve(Path other)método
El resolve()método hace lo contrario de relativize(): construye una nueva ruta absoluta a partir de una ruta absoluta y otra relativa.
| Código | Valor |
|---|---|
|
|
|
|
toFile()método
El método devuelve un Fileobjeto en desuso que almacena la misma ruta de archivo que el Pathobjeto.
toURI()método
El método convierte la ruta a un URI estándar y devuelve un objeto que contiene la ruta al archivo:
| Ruta al archivo | URI al archivo |
|---|---|
|
|
GO TO FULL VERSION