2008-09-09 21 views
18

Para un proyecto en el que estoy trabajando. Necesito buscar un ejecutable en el sistema de archivos. Para los derivados de UNIX, supongo que el usuario tiene el archivo en la poderosa variable $ PATH, pero no existe tal cosa en Windows.Buscar todas las letras de unidad en Java

Puedo suponer con seguridad que el archivo está como máximo a 2 niveles de profundidad en el sistema de archivos, pero no sé en qué disco se encontrará. Tengo que probar todas las unidades, pero no puedo encontrar la forma de enumerar todas las unidades disponibles (que tienen una letra asignada).

¿Algún ayuda?

EDIT: Sé que hay una variable% PATH%, pero no está tan integrada como en los sistemas UNIX. Por ejemplo, la aplicación que estoy buscando es OpenOffice. Tal software no estaría en% PATH%, típicamente.

+0

http: // stackoverflow.com/questions/462110/adquirir-drive-names-as-oppos-to-drive-letters-in-java también podría ser útil, fue para mí. –

Respuesta

37

http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots()

File[] roots = File.listRoots(); 
for(int i = 0; i < roots.length ; i++) 
    System.out.println("Root["+i+"]:" + roots[i]); 

Google: lista de unidades de Java, el primer éxito :-)

+2

Gracias. Supongo que necesito dedicar tiempo a perfeccionar mis habilidades de Google en lugar de codificar. – wvdschel

+0

¿Qué es "google"? – Zon

+1

+7 años después, este es ahora el mejor resultado cuando se usa Google [unidades de la lista de ventanas de Java] (https://www.google.co.uk/search?q=java+list+windows+drives) ツ – earcam

-1

Por supuesto, hay una variable de entorno PATHin Windows.

%PATH% Esta variable contiene una lista delimitada por punto y coma de directorios en los que el intérprete de comandos buscará los archivos ejecutables. Equivalente a la variable UNIX $ PATH.

+0

Sé que hay una variable% PATH%, pero no está tan integrada como en los sistemas UNIX. Por ejemplo, la aplicación que estoy buscando es OpenOffice. Tal software no estaría en% PATH%, típicamente. – wvdschel

0

Windows sí tiene una variable de entorno PATH. Tiene una sintaxis diferente a la de Unix porque usa punto y coma (;) como separador en lugar de dos puntos (:) y debe vigilar las cadenas entrecomilladas que pueden contener espacios. Pero, está ahí.

Si el instalador de este otro programa agrega su propio directorio a la variable de entorno PATH, entonces puede confiar en eso. Sin embargo, como mencionas, los instaladores de Windows normalmente no necesitan agregar la ruta de la aplicación a la RUTA porque en su lugar instalan un atajo de menú de inicio u otra cosa.

Para las letras de unidad en Java, un enfoque sería probarlas todas, solo habrá como máximo 24 (de la C a la Z) que sean de alguna utilidad. O bien, puede pagar y ejecutar "net use" y analizar los resultados, aunque eso es un poco más desordenado.

2

Buscando "en todas partes" puede ser muy desordenado.

Mira una unidad de CD-ROM, y se gira. Eso puede ser muy ruidoso.

Observe una unidad de red y puede ser muy lenta. Tal vez el servidor no funciona, y es posible que deba esperar unos minutos hasta que se agote el tiempo de espera.

Tal vez (para Windows-machines) solo debe mirar en el menú de inicio. Si nada apunta a OOo, probablemente no esté instalado. Si es así, el usuario probablemente sea un usuario avanzado, que no tendrá problemas para señalar la ubicación manualmente.

+4

Usted piensa que CD es ruidoso? Su PC obviamente ya no tiene disquete. _Those_ son ruidosos, incluso sin un disquete. – MSalters

0

Usar JNI. Esto es perfecto para el código de C++. No solo puede listar todas las unidades, sino también obtener el tipo de unidad correspondiente (extraíble, disco local o cd-rom, dvd-rom ... etc)

Cuestiones relacionadas