Enumerate external drives
Asked Answered
T

2

7

In java, you can use File.listRoots() to get all drives in the system.

I'm looking to get only the external drives, i.e. USB drives, external hard disks, optical drives, floppy, etc.

Is there any way to do it in java? If not, native C++ code would be good as well. In that case, I need both Windows and Linux code.

Tullis answered 5/6, 2010 at 13:25 Comment(1)
How is software going to know how a drive is mounted ? Except for the primary physical drive all drives can be mounted internally or externally. There probably is a way to boot from an external CD and access an external drive, without any drives at all.Lenette
P
13

To get file system info, use something like:

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

Also see this, this and this question.

Plan answered 5/6, 2010 at 13:47 Comment(1)
well it still does not answer if a drive is internal or externalTullis
F
0

You could use WMI or look into

GetRawInputDeviceList()

GetRawInputDeviceInfo()

This should get you started

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

Freemasonry answered 5/6, 2010 at 13:40 Comment(1)
Your answer seems to lean towards input devices (keyboards and mice) instead of mass storage devices.Aultman

© 2022 - 2024 — McMap. All rights reserved.