Obtener el directorio de inicio de usuario en Java

Mohammad Irfan 12 octubre 2023
  1. Obtenga el directorio de inicio del usuario utilizando el método System.getProperty() en Java
  2. Obtenga el directorio de inicio del usuario utilizando la biblioteca Apache CommonsIO en Java
  3. Obtenga el directorio de inicio del usuario utilizando el método System.getenv() en Java
  4. Resumen
Obtener el directorio de inicio de usuario en Java

Este tutorial presenta cómo obtener el directorio de inicio del usuario en Java y enumera algunos códigos de ejemplo para guiarlo en el tema.

Para un sistema operativo multiusuario, existe un directorio de sistema de archivos para cada usuario; este directorio se conoce como el directorio de inicio del usuario. Hay diferentes formas de encontrar el directorio de inicio del usuario en Java. Veamos cada uno de ellos.

Obtenga el directorio de inicio del usuario utilizando el método System.getProperty() en Java

La clase System en Java tiene un objeto Propiedades que se utiliza para almacenar diferentes propiedades y configuraciones del entorno de trabajo actual. También contiene el directorio de inicio del usuario.

Podemos acceder a estas propiedades usando el método getProperty() de esta clase. Necesitamos pasar el nombre de la propiedad del sistema que queremos ver. En nuestro caso, sería user.home.

El siguiente código demuestra cómo funciona.

public class Main {
  public static void main(String[] args) {
    String userHomeDir = System.getProperty("user.home");
    System.out.printf("The User Home Directory is %s", userHomeDir);
  }
}

Producción :

The User Home Directory is C:\Users\Lenovo

Si tiene curiosidad y desea ver todas las propiedades del sistema, puede utilizar el método getProperties(). El código para el método getProperties() se muestra a continuación.

import java.util.Map;
import java.util.Properties;
public class Main {
  public static void main(String[] args) {
    Properties props = System.getProperties();
    for (Map.Entry<Object, Object> prop : props.entrySet())
      System.out.println("Property: +" + prop.getKey() + "\tValue: " + prop.getValue());
  }
}

Obtenga el directorio de inicio del usuario utilizando la biblioteca Apache CommonsIO en Java

Apache Commons es una biblioteca muy poderosa, y la clase FileUtils de la biblioteca CommonsIO se puede usar para buscar el directorio de inicio.

Simplemente podemos usar el método getUserDirectory() de esta clase para ver el directorio de inicio del usuario. Devuelve un objeto File que representa el directorio de inicio. También podemos obtener una ruta String del directorio de inicio utilizando el método getUserDirectoryPath().

El código y la salida de estos métodos se muestran a continuación.

import java.io.File;
import org.apache.commons.io.FileUtils;
public class Main {
  public static void main(String[] args) {
    File homeDir = FileUtils.getUserDirectory();
    String homeDirPath = FileUtils.getUserDirectoryPath();
    System.out.printf("The User Home Directory is %s\n", homeDir);
    System.out.printf("The path of User Home Directory is %s", homeDirPath);
  }
}

Producción :

The User Home Directory is C:\Users\Lenovo
The path of User Home Directory is C:\Users\Lenovo

Obtenga el directorio de inicio del usuario utilizando el método System.getenv() en Java

El método getenv() de la clase System se utiliza para obtener el valor de las variables de entorno del sistema. Necesitamos pasar el nombre de la variable de entorno a la que queremos acceder.

Para obtener el directorio de inicio del usuario, necesitamos usar la cadena USERPROFILE. El siguiente programa demuestra el funcionamiento del método getenv().

public class Main {
  public static void main(String[] args) {
    String userHomeDir = System.getenv("USERPROFILE");
    System.out.printf("The User Home Directory is %s", userHomeDir);
  }
}

Producción :

The User Home Directory is C:\Users\Lenovo

También puede utilizar este método para ver todas las variables de entorno. Ejecute el siguiente programa si tiene curiosidad por saber más sobre las variables de entorno de su sistema.

import java.util.Map;
public class Main {
  public static void main(String[] args) {
    Map<String, String> envVars = System.getenv();
    for (Map.Entry<String, String> var : envVars.entrySet())
      System.out.println(var.getKey() + " ---> " + var.getValue());
  }
}

Resumen

En esta guía, aprendemos cómo obtener el directorio de inicio del usuario en Java. Para algunas plataformas Windows que ejecutan versiones anteriores de Java (antes de Java 8), el método System.getProperty() puede no dar el resultado deseado debido a la presencia de un error con ID 4787931.

También existe otro error similar (Bug ID 6519127). Debido a esto, el método getProperty() da resultados no deseados. Sin embargo, ambos errores ya se han resuelto.

En la mayoría de los casos, el método getProperty() funcionará bien, pero podemos usar el método alternativo System.getenv() para obtener el directorio de inicio del usuario.

Artículo relacionado - Java Home

Artículo relacionado - Java Directory