IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Repertoire 'Bureau' sous Mac/Linux


Sujet :

Java

  1. #1
    Eco
    Eco est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Points : 25
    Points
    25
    Par défaut Repertoire 'Bureau' sous Mac/Linux
    Bonjour,

    Mon appli qui est cross platform doit sauver un fichier sur le bureau de l'utilisateur.
    Sous Windows pas de soucis je peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        public File getDesktopDirectory() {
            FileSystemView filesys = FileSystemView.getFileSystemView();
            return filesys.getHomeDirectory();
        }
    Mon probleme est que sous Linux/Mac ce code me retour le repertoire parent du bureau. Je pourrais rajouter un "/Bureau" mais du coup mon appli ne fonctionne pas sur un OS en Anglais (ou le bureau est "/Desktop").

    Il y a t il un autre moyen acceder a ce repertoire sous Linux/Mac?
    Est ce possible de trouver le nom du bureau dans un fichier ressource?

    Merci de votre aide.

    Eco.

  2. #2
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut Une piste...
    Bonjour. Je ne connais malheureusement pas la réponse. De plus, vous ne précisez pas de quelle version de MacOS il s'agit. En effet, avant la version X de MacOS, le système de fichier était particulier et utilisait le caractère ':' en guise de séparateur dans les chemin de fichiers. Sans compter qu'il n'y a dans ce cas pas de notion de lettre comme sous windows. On part toujours d'une racine unique il me semble, ensuite c'est un principe de montage et de liens. Cependant, vous pouvez essayer cela en ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class envVar {
       public static void main(String args[]) {
          System.getProperties().list(System.out);
          }
       }
    Vous devriez pouvoir relever les noms des propriétés système de la JVM pour le caractère de séparation, et le chemin du profile de l'utilisateur locale. Il y a peut-être même une valeur qui décrit le chemin du bureau....

    Par exemple, sous Windows, pour obtenir le chemin du bureau, je ferai comme ça :

    System.getProperty("user.home") + System.getProperty("file.separator") + "Bureau" (dans le cas d'un windows Français. Desktop pour la version Anglo-Saxone).

  3. #3
    Eco
    Eco est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Merci pursang pour ta reponse.

    Pour trouver le chemin du bureau sous Windows, on peut utiliser le code que j'ai poste precedement.
    Il fonctionne quelque soit la langue de l'os car sous Windows getHomeDirectory() retourne le chemin du bureau.

    Mon probleme est vraiment avec Linux/Mac OS X.
    Sous ces OS, getHomeDirectory() ne retourne que le home
    par exemple: /home/eco

    Et c'est a moi d'ajouter le separateur de fichier et le nom du repertoire.
    Qui est 'Desktop' en anglais 'Bureau' en francais ...
    Comment trouver le nom du bureau pour toutes les langues

    Une autre idee peut etre?

    Eco.

  4. #4
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut D'accord...
    Je ne connaissais pas le coup du getHomeDirectory(), mais vue la syntaxe, c'est plutôt surprenant que sous windows cela renvoie le chemin du bureau. En effet, la vraie HomDirectory de Windows c'est l'équivalent de la variable d'environnement Windows %userprofile% qui elle pointe dans la home, c.a.d. jusqu'au nom de l'utilisateur. Mais le bureau n'a rien à voir avec tout cela. Je trouve donc normale qu'il n'aille pas plus loin sous Linux/Mac mais reste surpris du résultat sous Windows que je qualifierai plus de bug qu'autre chose. En effet, le bureau n'est pas la home directory.
    Bref, pour ce qui est de Linux/Mac qui éffectivement depuis la version 10 de ce dernier sont tous deux des machines 'unix', je crains qu'il n'y ai pas de solutions. A moins d'aller fouiller dans les variables d'environnement graphique Gnome ou KDE celon le cas pour Linux, et Je sais pas pour Mac. En tout cas bon courrage, pour ma part je ne sais pas allez plus loin...

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 872
    Points : 22 939
    Points
    22 939
    Billets dans le blog
    53
    Par défaut
    Ca change aussi sous Windows suivant les versions de toute maniere :

    • 2000, XP, 2003 : C:\documents and settings\<utilisateur>\Bureau
    • Vista, 7 : C:\users\<utilisateur>\Desktop (mais s'affichera C:\utilisateurs\<utilisateur>\Bureau dans l'Explorateur).

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 872
    Points : 22 939
    Points
    22 939
    Billets dans le blog
    53
    Par défaut
    Voila un bout de code qui retrouve les repertoires speciaux sous Windows en executant du VBScript (pas de JNI ou JNA donc).
    http://www.rgagnon.com/javadetails/java-0653.html

    On peut egalement appeler une commande pour interroger le registre et retourner l'emplacement du bureau :
    http://www.rgagnon.com/javadetails/java-0652.html

    Egalement faire new JFileChooser().getFileSystemView().getDefaultDirectory(); a tendance a retourner le chemin vers Mes documents.
    http://www.rgagnon.com/javadetails/java-0572.html

    Reste a trouver comment implementer qq chose de similaire sous Linux et MacOS.

    J'ignore si ce genre de truc est a jour et a des infos correctes suivant la langue du systeme : http://guides.macrumors.com/Home_folder

  7. #7
    Eco
    Eco est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Bonjour et merci pour toutes vos reponses.

    Pursang a raison le coup du getHomeDirectory(), c'est un peu etrange et d'ailleurs je viens de m'apercevoir que ca fonctionne pas sous vista/7

    Du coup je vais suivre les conseils de Bouye et interroger la base de registre.

    Pour Linux/Mac je suis toujours bloque.
    Apparement sous Snow Leopard il y aurait un NSDesktopDirectory() que je pourrais JNA.

    C'est quand meme curieux que acceder au bureau est si difficile.

    Eco.

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 872
    Points : 22 939
    Points
    22 939
    Billets dans le blog
    53
    Par défaut
    Oui mais le concept de bureau n'a jamais été vraiment standardisé sous Linux/Unix, tout comme les gestionnaire de fenêtre d'ailleurs. Après pour les principales distros tournant avec KDE ou GNOME tu dois avoir un répertoire Desktop (localisé ?) mais bon rien n'est garantit.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 196
    Points : 435
    Points
    435
    Par défaut
    Bonjour,

    Je risque des critiques en faisant remonter un vieux fil, mais comme j'ai rencontré le même problème hier, je pense à ceux qui tomberont sur la question non résolue comme moi. Voici comment je m'en suis tiré – j'imagine que presque tout le monde doit aboutir à une solution analogue et ne rien dire aux autres ensuite :

    Il y a toujours sous Linux, d'après ce que j'ai vu un peu partout, un fichier /home/utilisateur/.config/user-dirs.dirs.
    Le bureau y figure dans la ligne XDG_DESKTOP_DIR="$HOME/Bureau" (ou /Desktop, ou un truc en russe ou en martien).
    Je charge en mémoire le fichier, je cherche la chaîne qui commence par XDG_DESKTOP_DIR="$HOME/, je retire XDG_DESKTOP_DIR="$HOME et le guillemet final, et il me reste le nom localisé du bureau.

    En Free pascal pour Lazarus, j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    procedure TForm1.LitBureau (sender: TObject);
    {Trouver le nom et le chemin du bureau qui varient selon la langue}
    var
      sList: TStringList;
      i: Integer=0;
    begin
      sList := TStringList.Create;
      try
        {On charge en mémoire le fichier user-dirs.dir}
        sList.LoadFromFile (GetEnvironmentVariable('HOME') + '/.config/user-dirs.dirs');
        for i := 0 to sList.Count -1 do
          begin
          {On lit la ligne DESKTOP_DIR dans users-dirs.dirs}
          if Copy (sList [i], 1, 23) = 'XDG_DESKTOP_DIR="$HOME/'
          then
            begin
              {On crée une chaîne du type /home/utilisateur/Bureau en supprimant le reste}
              CheminBureau := GetEnvironmentVariable('HOME')
              + StringReplace (sList [i], 'XDG_DESKTOP_DIR="$HOME', '', [rfReplaceAll]);
              CheminBureau := StringReplace (CheminBureau, '"', '', [rfReplaceAll])
            end;
          end;
      except
        on E: EInOutError do
          ShowMessage ('File error')
      end;
    sList.Free;
    end;
    Facile à transposer dans tout autre langage.

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 872
    Points : 22 939
    Points
    22 939
    Billets dans le blog
    53
    Par défaut
    Je pense que c'est très dépendant de ton système de fenêtrage / environnement graphique (GNOME, KDE, ou quoi que ce soit q'Ubuntu utilise en ce moment).
    Après il est vrai que c'est a peu près standardisé en $HOME_DIRECTORY/Desktop sur toutes les plateformes (Windows, macOS, Linux) tout comme on a $HOME_DIRECTORY/Documents ou encore $HOME_DIRECTORY/Downloads de nos jours mais comme d'hab le soucis se pose en environnement ancien ou non-standard ou customise par une entreprise.

Discussions similaires

  1. Repertoire temporaire sous Linux
    Par sliderman dans le forum Langage
    Réponses: 6
    Dernier message: 19/03/2008, 17h35
  2. [LINUX] compiler des programmes linux sous Mac
    Par julien.63 dans le forum Apple
    Réponses: 6
    Dernier message: 29/05/2007, 19h59
  3. Réponses: 8
    Dernier message: 03/04/2007, 19h04
  4. [portabilité] ok sous Win, mais pas sur Mac/linux
    Par absolut75 dans le forum Général Java
    Réponses: 11
    Dernier message: 11/10/2006, 18h14
  5. Réponses: 1
    Dernier message: 29/11/2005, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo