Перечислить внешние диски

В Java вы можете использовать File.listRoots() для получения всех дисков в системе.

Я хочу получить только внешние накопители, то есть USB-накопители, внешние жесткие диски, оптические приводы, дискеты и т. Д.

Есть ли способ сделать это в java? Если нет, то собственный код C++ тоже подойдет. В этом случае мне нужен код как для Windows, так и для Linux.


person Asaf David    schedule 05.06.2010    source источник
comment
Как программное обеспечение узнает, как смонтирован диск? За исключением основного физического диска, все диски могут быть установлены как внутри, так и снаружи. Вероятно, есть способ загрузиться с внешнего компакт-диска и получить доступ к внешнему диску вообще без каких-либо дисков.   -  person Romain Hippeau    schedule 05.06.2010


Ответы (2)


Чтобы получить информацию о файловой системе, используйте что-то вроде:

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

Также см. это, это и этот вопрос.

person Zaki    schedule 05.06.2010
comment
ну, он все еще не отвечает, является ли диск внутренним или внешним - person Asaf David; 06.06.2010

Вы можете использовать WMI или изучить

ПолучитьRawInputDeviceList()

ПолучитьRawInputDeviceInfo()

Это должно помочь вам начать

C++

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

Ява

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

person Christopher Wilson    schedule 05.06.2010
comment
Ваш ответ, кажется, склоняется к устройствам ввода (клавиатуры и мыши), а не к запоминающим устройствам. - person Matti Virkkunen; 05.06.2010