2009-02-20 7 views
9

Sé el uso de los lenguajes .NET como C#, se puede hacer algo comoEn Java en Windows, ¿cómo puedo encontrar una carpeta de escritorio redirigida?

Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) 

para encontrar la ubicación redirigida del escritorio. Sin embargo, en Java, no puedo pensar en una buena manera de hacer esto. ¿Cuál es la forma más adecuada de encontrar un directorio de escritorio de usuario redirigido desde Java, sin usar JNI? El propósito específico aquí es con el objetivo de administrar un atajo de escritorio, si el usuario lo desea, para una aplicación Java Web Start.

Esta aplicación tiene que escribir en el árbol "Datos de programa", así como opcionalmente al escritorio. Estoy asumiendo que %APPDATA% siempre se llena correctamente, incluso cuando se redirigen las carpetas, para encontrar el árbol "Datos de la aplicación". Entonces mi pregunta abierta es cómo encontrar de manera confiable la carpeta del Escritorio.

NOTA: Creo que la propiedad del sistema Java ${user.home} en realidad (and erroneously) localiza el directorio de escritorio del usuario mediante claves de registro y luego intenta navegar un directorio para encontrar el directorio "de inicio". Esto funciona bien cuando no se redirigen directorios, y de lo contrario puede devolver algo útil.

Respuesta

29
FileSystemView filesys = FileSystemView.getFileSystemView(); 

File[] roots = filesys.getRoots(); 

filesys.getHomeDirectory() 
+1

¿Qué tan confiable es esto? Este método está totalmente indocumentado incluso en Java 1.6. Parece que esto es 100% específico de Windows en el comportamiento, lo que está bien, este tramo de código solo se invocará en Windows de todos modos, pero no es tranquilizador. – Eddie

+0

este método no es específico del sistema y debería funcionar en cualquier sistema, por favor consulte la siguiente documentación: http://littletutorials.com/2008/03/10/getting-file-system-details-in-java/ –

+1

Gracias por el enlace. Eso me tranquiliza. La falta de documentación API me tenía preocupado. Tal vez para JDK7 propongo que este JavaDoc se complete, si no es así. – 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); 
    } 
} 
Cuestiones relacionadas