В Java можно использовать File.listRoots()
получить все диски в системе.
Я надеюсь получать только внешние диски, т.е. Карты памяти, внешние жесткие диски, оптические диски, дискету, и т.д.
Там какой-либо путь состоит в том, чтобы сделать это в Java? В противном случае собственный код C++ был бы хорош также. В этом случае мне нужны и Windows и в код Linux.
Чтобы получить информацию о файловой системе, используйте что-то вроде:
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());
}
}
}
Вы можете использовать WMI или посмотреть на
GetRawInputDeviceList()
GetRawInputDeviceInfo()
Это должно помочь вам начать
C++
Java
http:// forums.java.net/jive/thread.jspa?threadID=37942