你能在 java 中获得已连接设备的列表吗

Can you get a list of connected devices in java

我是 java 的新手,我只是想知道您是否可以收到已连接 USB 设备的列表,例如:

如果我创建了一个 java 程序来修改设备,我希望 JFrame 为用户显示一个设备列表 select 一个...(这不是我的想法,也不是我的想法意图,但这是我能想到的最好的例子,抱歉。)

使用 javax.usb 库,我们可以获得有关 UsbHostManager 的信息。

import java.util.*;
import javax.usb.*;

public class USBLister {

  public static void main(String[] args) throws UsbException {
    //Get UsbHub
    UsbServices services = UsbHostManager.getUsbServices();
    UsbHub root = services.getRootUsbHub();

    listPeripherique(root);
  }

 public static void listPeripherique(UsbHub hub) {
    //List all the USBs attached
    List perepheriques = hub.getAttachedUsbDevices();
    Iterator iterator = perepheriques.iterator();

    while (iterator.hasNext()) {

      UsbDevice perepherique = (UsbDevice) iterator.next();
      System.out.println(perepherique);

      if (perepherique.isUsbHub())
        listPeripherique((UsbHub) perepherique);

    }
  }
}

这适用于存储媒体:-)

import java.io.IOException;
import java.nio.file.FileStore;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Paths;


public class FileStoreMountPoint {
    
     public static void main(String[] args) {
    
            for( var fileStore : FileSystems.getDefault().getFileStores() ) {

                var str = fileStore.toString();
                
                var rootPath = Paths.get( str.substring( 0, str.indexOf("(") ).trim() );
                
                try { 
                    Files.newDirectoryStream( rootPath ).forEach( path -> {
                        System.out.println( path );
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
         
     }

}