2010-06-05 15 views
7

En java, puede usar File.listRoots() para obtener todas las unidades en el sistema.Enumerar unidades externas

Busco para obtener sólo las unidades externas, es decir, unidades USB, discos duros externos, unidades ópticas, disquete, etc.

¿Hay alguna manera de hacerlo en java? Si no, el código nativo de C++ sería bueno también. En ese caso, necesito el código de Windows y Linux.

+0

¿Cómo va a saber el software cómo se monta una unidad? A excepción de la unidad física primaria, todas las unidades pueden montarse interna o externamente. Probablemente haya una manera de arrancar desde un CD externo y acceder a una unidad externa, sin ninguna unidad. –

Respuesta

12

Para obtener información del sistema de archivos, usar algo como:

import java.io.*; 
import javax.swing.filechooser.*; 

public class DriveTypeInfo 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("File system roots returned by FileSystemView.getFileSystemView():"); 
     FileSystemView fsv = FileSystemView.getFileSystemView(); 
     File[] roots = fsv.getRoots(); 
     for (int i = 0; i < roots.length; i++) 
     { 
     System.out.println("Root: " + roots[i]); 
     } 

     System.out.println("Home directory: " + fsv.getHomeDirectory()); 

     System.out.println("File system roots returned by File.listRoots():"); 

     File[] f = File.listRoots(); 
     for (int i = 0; i < f.length; i++) 
     { 
     System.out.println("Drive: " + f[i]); 
     System.out.println("Display name: " + fsv.getSystemDisplayName(f[i])); 
     System.out.println("Is drive: " + fsv.isDrive(f[i])); 
     System.out.println("Is floppy: " + fsv.isFloppyDrive(f[i])); 
     System.out.println("Readable: " + f[i].canRead()); 
     System.out.println("Writable: " + f[i].canWrite()); 
     } 
    } 
} 

también vea this, this y this pregunta.

+0

bien, todavía no responde si una unidad es interna o externa –