В Java под Windows, как я могу найти перенаправленную папку рабочего стола? - PullRequest
10 голосов
/ 20 февраля 2009

Я знаю, используя .NET языки, такие как C #, можно сделать что-то вроде

Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)

, чтобы найти перенаправленное местоположение рабочего стола. Однако под Java я не могу придумать хороший способ сделать это. Каков наиболее подходящий способ найти перенаправленный пользовательский каталог Desktop из Java без использования JNI? Конкретная цель здесь - в целях управления ярлыком на рабочем столе, если пользователь этого хочет, для приложения Java Web Start.

Это приложение должно записывать данные в дерево «Данные приложения», а также дополнительно на рабочий стол. Я делаю предположение, что %APPDATA% всегда правильно заполняется, даже когда папки перенаправляются, для нахождения дерева «Application Data». Поэтому мой открытый вопрос - как надежно найти папку Desktop.

ПРИМЕЧАНИЕ. Я считаю, что системное свойство Java ${user.home} на самом деле ( и ошибочно ) находит каталог рабочего стола пользователя через ключи реестра, а затем пытается перейти вверх по одному каталогу, чтобы найти «домашний» каталог. Это прекрасно работает, если ни одна директория не перенаправлена, и в противном случае может или не может вернуть что-то полезное.

Ответы [ 2 ]

30 голосов
/ 20 февраля 2009
FileSystemView filesys = FileSystemView.getFileSystemView();

File[] roots = filesys.getRoots();

filesys.getHomeDirectory()
0 голосов
/ 18 апреля 2012
public class Sample {
   public static void main(String[] args) {    
      String desktopPath =System.getProperty("user.home") + "\\"+"Desktop";
      String s = "\"" + desktopPath.replace("\\","\\\\") + "\\\\" +"satis" + "\"";

      System.out.print(s);
      File f = new File(s);

      boolean mkdir = f.mkdir();
      System.out.println(mkdir);
   }
}
...