Copier/coller le jar de son app [débutant]

Résolu
Hr2944 Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   -  
Hr2944 Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour
Je cherche a copier coller le jar de mon app (ce jar est donc mon app en elle même). Mon souci: pour le copier, il me faut le chemin (C:\Users\*******\Downloads), sauf que le nom d'utilisateur change d'un pc a l'autre. Du coup existe t-il un moyen de le faire (j' ai entendu parler des chemins relatifs, ça pourrait m'aider ?)
Merci de votre aide

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Basiquement tu peux utiliser la propriété user.home (cf. System Properties)

    String userHome = System.getProperty("user.home");
    File downloadPath = new File(userHome, "Downloads");
    System.out.println(downloadPath);

    Cependant rien ne garanti que ce dossier existe et qu'il soit vraiment le dossier de téléchargement/
    Par exemple chez moi j'ai déplacé le dossier Downloads pour qu'il soit dans D:\ alors que mon user.home est quand même dans C:\

    La bonne valeur est stockée dans le registre et on peut la requêter en ligne de commande :
    reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v {374DE290-123F-4565-9164-39C4925E467B}

    Petite méthode utilitaire pour faire cette commande en Java :
    public static String readRegistry(String path, String type, String name) {
        String[] cmdArray = { "reg", "query", path, "/v", name };
        try (Scanner sc = new Scanner(Runtime.getRuntime().exec(cmdArray).getInputStream())) {
            while (sc.hasNextLine()) {
                String line = sc.nextLine(), tab[] = line.split(Pattern.quote(type));
                if (tab.length == 2)
                    return tab[1].trim();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    Dans ton cas :
    String downloadPath = readRegistry("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders",
    "REG_EXPAND_SZ",
    "{374DE290-123F-4565-9164-39C4925E467B}");

    Malheureusement ceci ne fonctionne que pour Windows, il faudrait l'adapter pour Linux, Mac, etc.
    1
    1. Hr2944 Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   87
       
      Merci
      0
    2. Hr2944 Messages postés 744 Date d'inscription   Statut Membre Dernière intervention   87
       
      De toute façon mon project est destiné à Windows
      0
  2. jee pee Messages postés 9439 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    Salut,

    Et si tu utilisais les variables d'environnement ? Se connecter sur la ligne de commande et taper SET pour les avoir toutes.

    La variable USERPROFILE contient la racine du compte.
    0