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.


12 oct 2015

La clase File en Java

Características

Es una clase asociada a las operaciones de gestión de ficheros. Proporciona información sobre los ficheros a nivel de sistema operativo, como nombres, directorios, distintos tipos de rutas, o atributos. Permite realizar operaciones globales sobre ficheros  y directorios, como por ejemplo, borrados o cambios de nombre.

Se dispone de varios constructores para crear objetos de tipo File. Es necesario pasarles el nombre del fichero y el del directorio donde se va a crear.

Creación de objetos File

Constructores:
File (String ruta_y_nombrefichero)
File (String ruta, String nombrefichero)
File (File ruta, String nombrefichero)

Ejemplos:
File fichWin = new File(“C:\direct1\direct2\fichero.txt”);
File fichLinux = new File (“/direct1/direct2/fichero.txt”);

String direct= “C:\direct1\direct2”;

File fichWin2= new File(direct, “fichero2.txt”);
File descrip = new File(direct);
File fichWin3= new File (descrip, “fichero3.txt”);

Principales métodos

getName(), devuelve el nombre del fichero o directorio.
getPath(), devuelve la ruta relativa.
getAbsolutePath(), devuelve la ruta absoluta.
getParent(), devuelve el directorio padre o null.
canRead(),  devuelve cierto si el fichero se puede leer.
canWrite(), devuelve cierto si el fichero se puede escribir.
length(), devuelve el tamaño del fichero en bytes.
createNewFile(), crea un nuevo fichero si no existe.
mkdir(), crea un directorio.
delete(), borra el fichero o directorio.
renameTo(), cambia el nombre con el nuevo argumento.
exists(),  devuelve cierto si el fichero o directorio existe.
isDirectory(), devuelve cierto si el objeto File está asociado a un directorio.
isFile(), devuelve cierto si el objeto File está asociado a un fichero.
list(), devuelve una lista con los nombres de los ficheros o directorios.

Ejemplo de uso:

Import java.io.File
Public class ListarDirectorio{
public static void main(String[] args){
     System.out.println(“ Directorio actual: “);
     File f = new File(“.”);
String[] lista = f.list();
for (String nombre : lista) {
        System.out.println(nombre);
        }
          }
}

Atributos de la clase File

Hay que tener en cuenta los distintos separadores de directorios o carpetas que utilizan los diferentes sistemas operativos, por ejemplo en Linux será “/”, mientras que en Windows es “\”.
También los sistemas operativos difieren en el carácter utilizado para separar rutas, por ejemplo, en variables del sistema.
Para ayudar a las aplicaciones para que puedan intentar ser independientes del sistema operativo, se proporcionan los siguientes atributos de File:

File.pathSeparator (devuelve un String). Separador de rutas.
File.pathSeparatorChar (devuelve un char). Separador de rutas.
File.separator (devuelve String).  Separador de carpetas.

File.separatorChar (devuelve char). Separador de carpetas.