Java是否可以调用任何系统调用或操作系统特定的函数来获取所连接的USB设备的名称?
我在这里只看到了6到7个问题,但每个人都提到了C++函数GetRawInputDeviceList()等,而且它们不符合跨平台的要求.适用于C#或C++中的Windows或仅适用于Linux.
但我在Java工作.此外,这需要跨平台.至少,它需要适用于Windows,Linux和Mac.我也可以使用terminal/shell/command-prompt命令.我想我可以用Java运行它们.
我试过getFileSystemView和listRoots.但是他们给出了所有驱动器的名称[dvd,hdd分区,软盘等].
我只需要USB设备.
请不要提及jUSB或JSR080.为什么:
jUSB: 访问USB设备目前要求它们连接到GNU/Linux主机系统
javax.usb: pre-alpha Windows实现未经过认证,需要内核驱动程序.
usb4java: 基本上,它只是实现了JSR80而不是更多的抽象
虽然老实说我还没有尝试过libusb,因为它是用C++编写的.
如果您要提及API,请提及完全经过测试和尝试过的API,它们可以在Linux,Windows和Mac上运行.如果情况并非如此,我不会提出这个问题.我在很多其他帖子上看到了jUSB,javax.usb等的提及.
您可以使用适用于 Linux 的jUsb API。
terminal或者您可以使用该类在 Linux 中启动Process,然后运行
ls -la /dev/disk/by-id/usb-*并捕获stdout来了解结果。
对于 Windows,您可以尝试以下操作:How to find my USB flashdrive's path with PowerShell
编辑:
对于 Windows,另一个有用的实用程序是devcon.exe.
欲了解更多信息,请检查此。
编辑 2:
对于 Mac,您可以terminal使用该类启动Process,然后运行system_profiler SPUSBDataType