java - 检测插入的 usb 并使用 java 在 linux 中读取其文件

标签 java linux usb

我一直在努力:

  1. 检测到实时安装的 U 盘
  2. 阅读它的文件。

使用 usb4java,我能够完成第 1 部分。但是 usb4Java 返回设备,我不知道如何访问设备的文件。

这是允许检测的代码(您可以在以下位置找到完整示例:HotPlug example)

public int processEvent(Context context, Device device, int event,
    Object userData) {
  DeviceDescriptor descriptor = new DeviceDescriptor();
  int result = LibUsb.getDeviceDescriptor(device, descriptor);
  if (result != LibUsb.SUCCESS) {
    throw new LibUsbException("Unable to read device descriptor",
        result);
  }
  System.out.format("%s: %04x:%04x%n",
      event == LibUsb.HOTPLUG_EVENT_DEVICE_ARRIVED ? "Connected" :
          "Disconnected",
      descriptor.idVendor(), descriptor.idProduct());
  return 0;
}

最佳答案

您可以从 java 调用 linux shell 命令。您想获取有关 USB 上文件的信息,因此必须挂载它,否则将无法轻松访问文件系统结构。如果它是自动挂载的,您可以通过 java 查看文件系统,即通过

Process p = Runtime.getRuntime().exec("ls/media/home/USB_mass_storage_name"); 其中 /media/home/USB_mass_storage_name 是挂载点

如果未安装,则必须从 java ( How to execute bash command with sudo privileges in Java? ) 安装 USB

Running system commands in Java applications是关于此的更多信息,也是一种将信息从 linux 命令输出读回 java 的方法

关于java - 检测插入的 usb 并使用 java 在 linux 中读取其文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44746946/

相关文章:

linux - 将 .TXT 转换为 .XLSX,并保留每个单元格的数据类型 "Text"

c++ - 像键盘一样向 cpu 发送中断?

java - 这两种方法有什么区别?它们看起来都一样,但每种方法都会导致不同的输出

java - 在类层次结构中有一个空的中间类是不好的做法吗?

java - 如果没有 @Inject 构造函数,则无法提供 Dagger2

c - USB Linux API : call ioctl requests from user space app

c - 没有 udev 或 libusb 的 linux 上的 usb 连接事件

java - 格式字符串 XXX 不是有效的格式字符串,因此不应将其传递给 String.format

linux - 在长进程中保留 root 特权

linux - 需要一个简单的 Linux C++ IDE (Android NDK)