Obtenha o diretório inicial do usuário em Java
- 
          
            Obtenha o diretório inicial do usuário usando o método System.getProperty()em Java
- Obtenha o diretório inicial do usuário usando a biblioteca Apache CommonsIO em Java
- 
          
            Obtenha o diretório inicial do usuário usando o método System.getenv()em Java
- Resumo
 
Este tutorial apresenta como obter o diretório inicial do usuário em Java e lista alguns códigos de exemplo para guiá-lo no tópico.
Para um sistema operacional multiusuário, existe um diretório do sistema de arquivos para cada usuário; esse diretório é conhecido como diretório inicial do usuário. Existem diferentes maneiras de localizar o diretório inicial do usuário em Java. Vamos dar uma olhada em cada um deles.
Obtenha o diretório inicial do usuário usando o método System.getProperty() em Java
A classe System em Java tem um objeto Properties usado para armazenar diferentes propriedades e configurações do ambiente de trabalho atual. Ele também contém o diretório inicial do usuário.
Podemos acessar essas propriedades usando o método getProperty() desta classe. Precisamos passar o nome da propriedade do sistema que queremos ver. No nosso caso, seria user.home.
O código a seguir demonstra como 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);
  }
}
Produção:
The User Home Directory is C:\Users\Lenovo
Se estiver curioso e quiser ver todas as propriedades do sistema, você pode usar o método getProperties(). O código para o método getProperties() é mostrado abaixo.
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());
  }
}
Obtenha o diretório inicial do usuário usando a biblioteca Apache CommonsIO em Java
Apache Commons é uma biblioteca muito poderosa, e a classe FileUtils da biblioteca CommonsIO pode ser usada para buscar o diretório inicial.
Podemos simplesmente usar o método getUserDirectory() dessa classe para visualizar o diretório inicial do usuário. Ele retorna um objeto File que representa o diretório inicial. Também podemos obter um caminho String do diretório inicial usando o método getUserDirectoryPath().
O código e a saída para esses métodos são mostrados abaixo.
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);
  }
}
Produção:
The User Home Directory is C:\Users\Lenovo
The path of User Home Directory is C:\Users\Lenovo
Obtenha o diretório inicial do usuário usando o método System.getenv() em Java
O método getenv() da classe System é usado para obter o valor das variáveis de ambiente do sistema. Precisamos passar o nome da variável de ambiente que queremos acessar.
Para obter o diretório inicial do usuário, precisamos usar a string USERPROFILE. O programa a seguir demonstra o funcionamento do 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);
  }
}
Produção:
The User Home Directory is C:\Users\Lenovo
Você também pode usar este método para visualizar todas as variáveis de ambiente. Execute o programa a seguir se estiver curioso para saber mais sobre as variáveis de ambiente do seu 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());
  }
}
Resumo
Neste guia, aprendemos como obter o diretório inicial do usuário em Java. Para algumas plataformas Windows que executam versões Java mais antigas (antes do Java 8), o método System.getProperty() pode não dar o resultado desejado devido à presença de um bug com ID 4787931.
Outro bug semelhante (Bug ID 6519127) também existe. Por causa disso, o método getProperty() fornece resultados indesejáveis. No entanto, esses dois bugs já foram resolvidos.
Na maioria dos casos, o método getProperty() funcionará bem, mas podemos usar o método alternativo System.getenv() para obter o diretório inicial do usuário.