Comment obtenir le chemin du bureau en Java

Je pense que cela ne fonctionnera que sur une installation Windows en anglais:

System.getProperty("user.home") + "/Desktop"; 

Comment puis-je faire ce travail pour Windows non anglais?

J’utilise une version française de Windows et avec elle l’instruction:

 System.getProperty("user.home") + "/Desktop"; 

fonctionne bien pour moi.

Je pense que c’est la même question … mais je ne suis pas sûr!:

En java sous Windows, comment trouver un dossier redirigé sur le bureau?

En le lisant, je m’attendrais à ce que cette solution renvoie l’utilisateur.home, mais apparemment pas, et le lien dans la réponse commente cela. Je n’ai pas essayé moi-même.

Je suppose qu’en utilisant JFileChooser la solution nécessitera une JVM sans tête, mais vous en utilisez probablement une.

 javax.swing.filechooser.FileSystemView.getFileSystemView().getHomeDirectory() 

Ceci est pour Windows uniquement. Lancez REG.EXE et capturez sa sortie:

 import java.io.*; public class WindowsUtils { private static final Ssortingng REGQUERY_UTIL = "reg query "; private static final Ssortingng REGSTR_TOKEN = "REG_SZ"; private static final Ssortingng DESKTOP_FOLDER_CMD = REGQUERY_UTIL + "\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\" + "Explorer\\Shell Folders\" /v DESKTOP"; private WindowsUtils() {} public static Ssortingng getCurrentUserDesktopPath() { try { Process process = Runtime.getRuntime().exec(DESKTOP_FOLDER_CMD); StreamReader reader = new StreamReader(process.getInputStream()); reader.start(); process.waitFor(); reader.join(); Ssortingng result = reader.getResult(); int p = result.indexOf(REGSTR_TOKEN); if (p == -1) return null; return result.subssortingng(p + REGSTR_TOKEN.length()).sortingm(); } catch (Exception e) { return null; } } /** * TEST */ public static void main(Ssortingng[] args) { System.out.println("Desktop directory : " + getCurrentUserDesktopPath()); } static class StreamReader extends Thread { private InputStream is; private SsortingngWriter sw; StreamReader(InputStream is) { this.is = is; sw = new SsortingngWriter(); } public void run() { try { int c; while ((c = is.read()) != -1) sw.write(c); } catch (IOException e) { ; } } Ssortingng getResult() { return sw.toSsortingng(); } } } 

ou vous pouvez utiliser la JNA ( exemple complet ici )

  Shell32.INSTANCE.SHGetFolderPath(null, ShlObj.CSIDL_DESKTOPDIRECTORY, null, ShlObj.SHGFP_TYPE_CURRENT, pszPath); 

Semble pas si facile …

Mais vous pouvez essayer de trouver une réponse au code de certains projets open-source, par exemple sur Koders . Je suppose que toutes les solutions se résument à vérifier le chemin HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop dans le registre Windows. Et sont probablement spécifiques à Windows.

Si vous avez besoin d’une solution plus générale, j’essaierais de trouver une application open source qui fonctionne correctement sur différentes plates-formes et place des icons sur le bureau de l’utilisateur.

 public class Sample { public static void main(Ssortingng[] args) { Ssortingng desktopPath =System.getProperty("user.home") + "\\"+"Desktop"; Ssortingng s = "\"" + desktopPath.replace("\\","\\\\") + "\\\\" +"satis" + "\""; System.out.print(s); File f = new File(s); boolean mkdir = f.mkdir(); System.out.println(mkdir); } } 

il y a 2 choses.

  1. vous utilisez la mauvaise barre oblique. pour windows c’est \ not / .
  2. J’utilise RandomAccesFile et File pour gérer les fichiers et les dossiers, et il faut une double barre oblique ( \\ ) pour séparer le nom des dossiers.

La solution la plus simple consiste à trouver le nom de la machine, car ce nom est uniquement variable dans le chemin d’access au dossier Desktop. Donc, si vous pouvez trouver cela, vous avez trouvé le chemin vers Desktop. Le code suivant devrait faire l’affaire – il l’a fait pour moi 🙂

 Ssortingng machine_name = InetAddress.getLocalHost().getHostName(); Ssortingng path_to_desktop = "C:/Documents and Settings/"+machine_name+"/Desktop/"; 

Votre barre oblique n’est pas correcte Vous devriez l’utiliser comme ça.

  try{ Ssortingng sys = System.getProperty("user.home"); Ssortingng fileurl = sys+ "\\Desktop\\new"; File newfile = new File(fileurl); newfile.mkdir(); }catch(Exception ioe){ // Handle the error System.out.println("Error"); }