【问题标题】:Enumerate external drives枚举外部驱动器
【发布时间】:2010-06-05 13:25:57
【问题描述】:

在java中,你可以使用File.listRoots()来获取系统中的所有驱动器。

我只想获取外部驱动器,即 USB 驱动器、外部硬盘、光驱、软盘等。

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

【问题讨论】:

  • 软件如何知道驱动器是如何安装的?除主物理驱动器外,所有驱动器都可以安装在内部或外部。可能有一种方法可以从外部 CD 启动并访问外部驱动器,而无需任何驱动器。

标签: java c++ filesystems drivers


【解决方案1】:

要获取文件系统信息,请使用以下内容:

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问题。

【讨论】:

  • 如果驱动器是内部驱动器还是外部驱动器,它仍然无法回答
【解决方案2】:

您可以使用 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

【讨论】:

  • 您的答案似乎倾向于输入设备(键盘和鼠标)而不是大容量存储设备。
猜你喜欢
  • 2013-03-30
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2020-12-10
  • 1970-01-01
  • 2010-09-22
  • 2011-08-28
相关资源
最近更新 更多