2009-02-20 2 views
9

Я знаю, что с помощью языков .NET, таких как C#, можно сделать что-то вродеВ java под Windows, как найти перенаправленную папку рабочего стола?

Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) 

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

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

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

ответ

29
FileSystemView filesys = FileSystemView.getFileSystemView(); 

File[] roots = filesys.getRoots(); 

filesys.getHomeDirectory() 
+1

Насколько надежны это? Этот метод полностью недокументирован даже в Java 1.6. Похоже, что это 100% -ное поведение Windows в поведении, и это нормально, но эта нота кода будет вызываться только на Windows, но это не обнадеживает. – Eddie

+0

этот метод НЕ является специфичным для системы и должен работать в любой системе, см. Следующую документацию: http://littletutorials.com/2008/03/10/getting-file-system-details-in-java/ –

+1

Спасибо за связь. Это меня успокаивает. Меня не волновало отсутствие документации по API. Возможно, для JDK7 я предлагаю, чтобы этот JavaDoc был заполнен, если его еще нет. – Eddie

-1
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); 
    } 
} 
Смежные вопросы