13 oct 2015

Trabajando con rutas (paths) en Java. Utilizando System property y File

La clase System utiliza un objeto de tipo Properties para tener la información relacionada con el entorno de trabajo actual. Esta información incluye el separador de las rutas de los directorios,  el directorio de trabajo del usuario, la versión de Java, etc.

Estas propiedades pueden ser leídas y escritas, mediante métodos get y set. Por ejemplo para obtener el nombre del sistema operativo, tendríamos que pasarle al método get, la cadena “os.name”, de esta forma:
System.getProperty(“os.name”);

La siguiente tabla muestra las posibles claves y su significado:

Clave
Significado
"file.separator"
Carácter separador de las rutas de los ficheros. Por ejemplo "/" en Linux y "\" en Windows.
"java.class.path"
Ruta usada para buscar clases compiladas .class o paquetes .jar.
"java.home"
Directorio de instalación del Java Runtime Environment (JRE)
"java.vendor"
Nombre del distribuidor del JRE
"java.vendor.url"
URL del distribuidor del JRE
"java.version"
Número de versión del JRE
"line.separator"
Secuencia de caracteres usada por el SO como separador de líneas de los ficheros de texto
"os.arch"
Arquitectura del sistema operativo
"os.name"
Nombre del sistema operativo
"os.version"
Versión del sistema operativo
"path.separator"
Carácter utilizado para separar las rutas en java.class.path
"user.dir"
Directorio de trabajo del usuario
"user.home"
Directorio home del usuario
"user.name"
Nombre de la cuenta de usuario

Algunos de estos valores también se pueden obtener mediante File. El separador de rutas se puede obtener con File.pathSeparator (devuelve un String) o File.pathSeparatorChar (devuelve un char). El separador de ficheros se obtiene con File.separator (devuelve String) y con File.separatorChar (devuelve char).

Estas propiedades nos ayudarán a que el código desarrollado pueda ser multiplataforma, aunque no siempre es fácil, ya que por ejemplo no todos los sistemas operativos utilizan el mismo nombre para el escritorio: en unos casos es “Desktop” en otros “Escritorio”. Algo como:

String ruta= System.getProperty("user.home")+File.separator+"Desktop"+File.separator+”fichero.txt”

no siempre sería válido. Habría que verificarlo y mediante comprobaciones del nombre del sistema operativo, determinar con condiciones la ruta.


No hay comentarios:

Publicar un comentario