2009-02-20 26 views
9

, tek Masaüstü yönlendirildi yerini bulmak içinWindows'da java'da, yeniden yönlendirilmiş bir Masaüstü klasörünü nasıl bulabilirim? Ben C# gibi .NET dillerini kullanarak biliyorum

Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) 

gibi bir şey yapabilirsiniz. Ancak, Java altında, bunu yapmak için iyi bir yol düşünemiyorum. JNI kullanmadan, Java'dan yönlendirilmiş bir kullanıcı Masaüstü dizini bulmanın en uygun yolu nedir? Buradaki özel amaç, bir Java Web Start uygulaması için kullanıcı bir tane istiyorsa, bir masaüstü kısayolunun yönetilmesidir.

Bu uygulamanın "Uygulama Verileri" ağacının yanı sıra isteğe bağlı olarak Masaüstüne yazması gerekir. "Uygulama Verileri" ağacını bulmak için, klasörlere yeniden yönlendirilse bile %APPDATA%'un her zaman doğru şekilde doldurulduğunu varsayıyorum. Bu yüzden açık sorduğum soru, Masaüstü klasörünün nasıl güvenilir bir şekilde bulunabileceğidir. Not: ${user.home} numaralı Java sistem özelliğinin (and erroneously), kullanıcının Masaüstü dizinini kayıt defteri anahtarlarıyla bulmasını ve "ana" dizini bulmak için bir dizinde gezinmeyi denediğini düşünüyorum. Bu, hiçbir dizin yeniden yönlendirilmediğinde ve başka bir şekilde yararlı bir şey döndürüp döndürmeyeceği zaman iyi çalışır.

cevap

29
FileSystemView filesys = FileSystemView.getFileSystemView(); 

File[] roots = filesys.getRoots(); 

filesys.getHomeDirectory() 
+1

bu ne kadar güvenilirdir? Bu yöntem, Java 1.6'da bile tamamen belgelenmemiş. Bu davranışta% 100 Windows'a özgü gibi görünüyor, bu da OK, bu kod sadece Windows üzerinde çalıştırılacak olsa da, güven verici değil. – Eddie

+0

Bu yöntem sisteme özgü DEĞİLDİR ve herhangi bir sistem üzerinde çalışmalıdır lütfen aşağıdaki belgelere bakın: http://littletutorials.com/2008/03/10/getting-file-system-details-in-java/ –

+1

Teşekkür ederiz Bağlantı. Bu beni rahatlatıyor. API belgelerinin olmaması beni endişelendirdi. Belki de JDK7 için, bu JavaDoc'un önceden doldurulmamışsa doldurulmasını öneriyorum. – 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); 
    } 
} 
İlgili konular