2010-06-05 7 views
7

En Java, vous pouvez utiliser File.listRoots() pour obtenir tous les lecteurs du système.Énumérer les lecteurs externes

Je cherche à obtenir que les disques durs externes, à savoir les lecteurs USB, disques durs externes, lecteurs optiques, disquettes, etc.

Est-il possible de le faire en java? Sinon, le code C++ natif serait bien aussi. Dans ce cas, j'ai besoin de code Windows et Linux.

+0

Comment le logiciel va-t-il savoir comment un disque est monté? À l'exception du lecteur physique principal, tous les lecteurs peuvent être montés en interne ou en externe. Il existe probablement un moyen de démarrer à partir d'un CD externe et d'accéder à un lecteur externe, sans aucun lecteur du tout. –

Répondre

12

Pour obtenir des informations du système de fichiers, utilisez quelque chose comme:

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()); 
     } 
    } 
} 

également voir this, this et this question.

+0

bien qu'il ne répond toujours pas si un lecteur est interne ou externe –

Questions connexes