gpt4 book ai didi

java - 只是获取连接到系统的 USB 设备的名称?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:12 24 4
gpt4 key购买 nike

Java 是否可以调用任何系统调用或特定于操作系统的函数来获取所连接的 USB 设备的名称?

我在这里只看到了 6-7 个问题,但每个人都提到了 C++ 函数 GetRawInputDeviceList() 等,它们不兼容跨平台。适用于 C# 或 C++ 中的 Windows 或仅适用于 Linux。

但我在 Java 工作。此外,这需要是跨平台的。至少,它需要适用于 Windows、Linux 和 Mac。我也可以使用终端/shell/命令提示符命令。我想我可以用 Java 运行它们。

我试过 getFileSystemViewlistRoots。但是他们会给出所有驱动器的名称 [dvd、hdd 分区、软盘等]。

我只需要获取 USB 设备。

请不要提及 jUSB 或 JSR080。为什么:

jUSB: access to USB devices currently requires that they be connected to a GNU/Linux host system

javax.usb: pre-alpha Windows implementation is not certified and requires a kernel driver.

usb4java: basically, it just implements JSR80 with little more abstraction, perhaps

老实说,我还没有尝试过 libusb,因为它是用 C++ 编写的。

如果您要提及 API,请提及经过全面测试和试用的 API,它们可以在 Linux、Windows 和 Mac 上运行。如果不是这样,我就不会提出这个问题。我在许多其他帖子中看到了 jUSB、javax.usb 等的提及。

最佳答案

您可以使用jUsb API , 适用于 Linux。

或者您可以使用 Process 类在 Linux 中启动 terminal,然后运行 ​​
ls -la/dev/disk/by-id/usb-*
并捕获 stdout 以了解结果。

对于 Windows,您可以试试这个:How to find my USB flash drive's path with PowerShell

编辑:

对于 Windows,另一个有用的实用程序是 devcon.exe

更多信息,查看this.

编辑 2:对于 Mac,您可以使用 Process 类启动 terminal,然后运行 ​​system_profiler SPUSBDataType

关于java - 只是获取连接到系统的 USB 设备的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14018693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com