枚举外部驱动器

问题描述:

在java中,您可以使用File.listRoots()获取系统中的所有驱动器。枚举外部驱动器

我期待只得到外部驱动器,即USB驱动器,外置硬盘,光驱,软驱等

有没有办法做到这一点在Java中?如果不是,本地C++代码也会很好。在那种情况下,我需要Windows和Linux代码。

+0

软件如何知道如何安装驱动器?除主物理驱动器外,所有驱动器都可以安装在内部或外部。可能有一种方法可以从外部CD启动并访问外部驱动器,而不需要任何驱动器。 – 2010-06-05 15:27:24

你可以使用WMI或可考虑

GetRawInputDeviceList()

GetRawInputDeviceInfo()

这应该让你开始

C++

http://cboard.cprogramming.com/windows-programming/114294-getting-list-usb-devices-listed-system.html

的Java

的http:// forums.java.net/jive/thread.jspa?threadID=37942

+0

您的答案似乎倾向于输入设备(键盘和鼠标)而不是大容量存储设备。 – 2010-06-05 13:44:39

+0

你有一个好点! – 2010-06-07 12:46:45

获取文件系统信息,使用类似:

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

而且见thisthisthis问题。

+0

以及驱动器是内部的还是外部的,它仍然不能回答 – 2010-06-06 04:39:21