2009-02-20 8 views
9

So utilizzando linguaggi .NET, come C#, si può fare qualcosa di simileIn Java sotto Windows, come trovo una cartella Desktop reindirizzata?

Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) 

per trovare la posizione reindirizzato del desktop. Tuttavia, sotto Java, non riesco a pensare a un buon modo per farlo. Qual è il modo più appropriato per trovare una directory Desktop utente reindirizzata da Java, senza utilizzare JNI? Lo scopo specifico qui è ai fini della gestione di un collegamento sul desktop, se l'utente lo desidera, per un'applicazione Java Web Start.

Questa applicazione deve scrivere sulla struttura "Dati applicazione" e facoltativamente sul desktop. Sto supponendo che %APPDATA% sia sempre correttamente compilato, anche quando le cartelle vengono reindirizzate, per trovare la struttura "Dati applicazione". Quindi la mia domanda aperta è come trovare in modo affidabile la cartella Desktop.

NOTA: Credo che la proprietà di sistema Java ${user.home} in realtà (and erroneously) individua la directory Desktop dell'utente tramite le chiavi del Registro di sistema e quindi cerchi di spostarsi in una directory per trovare la directory "home". Funziona bene quando nessuna directory viene reindirizzata e altrimenti potrebbe restituire qualcosa di utile.

risposta

29
FileSystemView filesys = FileSystemView.getFileSystemView(); 

File[] roots = filesys.getRoots(); 

filesys.getHomeDirectory() 
+1

Quanto è affidabile questo? Questo metodo è totalmente non documentato anche in Java 1.6. Sembra che questo comportamento al 100% sia specifico per Windows, il che è OK, questa parte di codice sarebbe invocata su Windows in ogni caso, ma non è rassicurante. – Eddie

+0

questo metodo NON è specifico del sistema e dovrebbe funzionare su qualsiasi sistema si prega di consultare la seguente documentazione: http://littletutorials.com/2008/03/10/getting-file-system-details-in-java/ –

+1

Grazie per il link. Questo mi rassicura. La mancanza di documentazione API mi ha preoccupato. Forse per JDK7 proporrò questo JavaDoc da compilare, se non lo è già. – 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); 
    } 
}