检测插入的 USB 并使用 java 在 linux 中读取其文件
Detect plugged usb and read its files in linux using java
我一直在努力:
- 检测到实时挂载的 U 盘
- 阅读它的文件。
使用 usb4java,我能够完成第 1 部分。但是 usb4Java returns 设备,我不知道如何访问设备的文件。
这是允许检测的代码(您可以在以下位置找到完整的示例: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;
}
用于读取文件(第 2 部分),
1 - 首先阅读您已经在做的接口和端点详细信息
getDeviceDescriptor(Device device, DeviceDescriptor descriptor)
2 - 根据可用端点,您可以启动同步或异步传输来读取数据 -
public static int controlTransfer(DeviceHandle handle, ...)
public static int bulkTransfer(DeviceHandle handle, ...)
请记住,usb4java 在 libusb 之上工作。
usb4java example - link
usb4java API reference - link
libusb API reference - link
您可以从 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
in Running system commands in Java applications 是关于此的更多信息,也是一种将信息从 linux 命令输出读回 java
的方法
我一直在努力:
- 检测到实时挂载的 U 盘
- 阅读它的文件。
使用 usb4java,我能够完成第 1 部分。但是 usb4Java returns 设备,我不知道如何访问设备的文件。
这是允许检测的代码(您可以在以下位置找到完整的示例: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;
}
用于读取文件(第 2 部分),
1 - 首先阅读您已经在做的接口和端点详细信息
getDeviceDescriptor(Device device, DeviceDescriptor descriptor)
2 - 根据可用端点,您可以启动同步或异步传输来读取数据 -
public static int controlTransfer(DeviceHandle handle, ...)
public static int bulkTransfer(DeviceHandle handle, ...)
请记住,usb4java 在 libusb 之上工作。
usb4java example - link
usb4java API reference - link
libusb API reference - link
您可以从 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? )
安装 USBin Running system commands in Java applications 是关于此的更多信息,也是一种将信息从 linux 命令输出读回 java
的方法