2009-02-20 10 views
9

私は、C#などの.NET言語を使用して、1デスクトップのリダイレクトされた場所を見つけることWindowsのJavaでは、リダイレクトされたデスクトップフォルダはどのようにして見つけられますか?

Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) 

ような何かを行うことができます知っています。しかし、Javaでは、これを行う良い方法は考えられません。 JNIを使​​用せずに、Javaからリダイレクトされたユーザーのデスクトップディレクトリを見つける最も適切な方法は何ですか?ここでの具体的な目的は、Java Web Startアプリケーションのためにデスクトップショートカットを管理するためです。

このアプリケーションでは、「アプリケーションデータ」ツリーとオプションでデスクトップに書き込む必要があります。私は、%APPDATA%は、フォルダがリダイレクトされている場合でも、 "Application Data"ツリーを見つけるために、常に正しく入力されていると仮定しています。だから私の未解決な問題は、確実にDesktopフォルダを見つける方法です。

注:実際には(and erroneously)Javaシステムのプロパティ${user.home}は、レジストリキーを使用してユーザーのデスクトップディレクトリを特定し、1つのディレクトリを検索して「ホーム」ディレクトリを検索しようとします。ディレクトリがリダイレクトされていない場合はうまく動作し、そうでない場合は有用なものが返されることがあります。

答えて

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); 
    } 
} 
関連する問題