1. Path
clase
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 File
y FileInputStream
para trabajar con archivos. Sin embargo, la File
clase 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 Path
clase. Path
es la clase que reemplazó a File
. Es más seguro y más eficiente.
Path
clase
Técnicamente, Path
no es una clase, es una interfaz. Esto se hace para permitir la escritura de un descendiente de la Path
clase 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 Path
interfaz 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 Path
objeto
Para crear un Path
objeto (que en realidad será un objeto de la WindowsPath
clase descendiente), debe usar una declaración como esta:
Path name = Path.of(path);
Donde name
es el nombre de una Path
variable y path
es la ruta al archivo (o directorio) incluido el nombre del archivo (o directorio). Y of
es un método estático de la Path
clase.
El of()
método se utiliza para crear WindowsPath
objetos si el programa se ejecuta en Windows. Si el programa se ejecuta en Linux, se UnixPath
crean objetos. No puede crear un Path
objeto 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 Path
exista un objeto válido. Tal vez solo desee crear un archivo... Un Path
objeto 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 Path
tipo
La Path
interfaz 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 Path obsoletoFile |
|
Convierte un Path objeto en un URI objeto. |
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 File
objeto en desuso que almacena la misma ruta de archivo que el Path
objeto.
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