用Java检测USB设备的插入和输出(类似于监听)?不仅仅是潘德里夫
如何使用Java检测USB设备的插拔(类似于监听)?用Java检测USB设备的插入和输出(类似于监听)?不仅仅是潘德里夫,java,jakarta-ee,usb,javapos,Java,Jakarta Ee,Usb,Javapos,如何使用Java检测USB设备的插拔(类似于监听)? 不仅仅是一个pendrive,它还可以是一个扫描仪或打印机 我试过jUSB,但没用。 USB Java库会更强大,因为我只需要使用一点 我需要在代码中包含这些行,以便可以通知正在插入和拔出的设备。Java中的USB支持仅限于第三方库。我没有用过这些,但你可以试试JUSB 如果您无法通过USB库找到解决方案,您可以做一些bodge工作,循环遍历所有可能的驱动器号,为每个驱动器创建一个文件对象,并测试是否可以从中读取。如果插入了USB存储设备,以
不仅仅是一个pendrive,它还可以是一个扫描仪或打印机 我试过jUSB,但没用。
USB Java库会更强大,因为我只需要使用一点
我需要在代码中包含这些行,以便可以通知正在插入和拔出的设备。Java中的USB支持仅限于第三方库。我没有用过这些,但你可以试试JUSB 如果您无法通过USB库找到解决方案,您可以做一些bodge工作,循环遍历所有可能的驱动器号,为每个驱动器创建一个文件对象,并测试是否可以从中读取。如果插入了USB存储设备,以前出现故障的驱动器号现在将通过,这样您就知道您有了一个新设备。当然,你不知道它是什么类型的设备(例如,它可能是CD/DVD)。但正如我所说,这不是一个理想的解决方案 这里有一个简化的实用程序来证明这一点
import java.io.*;
/**
* Waits for USB devices to be plugged in/unplugged and outputs a message
*/
public class FindDrive
{
/**
* Application Entry Point
*/
public static void main(String[] args)
{
String[] letters = new String[]{ "A", "B", "C", "D", "E", "F", "G", "H", "I"};
File[] drives = new File[letters.length];
boolean[] isDrive = new boolean[letters.length];
// init the file objects and the initial drive state
for ( int i = 0; i < letters.length; ++i )
{
drives[i] = new File(letters[i]+":/");
isDrive[i] = drives[i].canRead();
}
System.out.println("FindDrive: waiting for devices...");
// loop indefinitely
while(true)
{
// check each drive
for ( int i = 0; i < letters.length; ++i )
{
boolean pluggedIn = drives[i].canRead();
// if the state has changed output a message
if ( pluggedIn != isDrive[i] )
{
if ( pluggedIn )
System.out.println("Drive "+letters[i]+" has been plugged in");
else
System.out.println("Drive "+letters[i]+" has been unplugged");
isDrive[i] = pluggedIn;
}
}
// wait before looping
try { Thread.sleep(100); }
catch (InterruptedException e) { /* do nothing */ }
}
}
}
import java.io.*;
/**
*等待USB设备插入/拔出并输出消息
*/
公共类FindDrive
{
/**
*应用程序入口点
*/
公共静态void main(字符串[]args)
{
字符串[]字母=新字符串[]{“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”};
文件[]驱动器=新文件[letters.length];
boolean[]isDrive=新的boolean[letters.length];
//初始化文件对象和初始驱动器状态
对于(int i=0;i
查看此信息也可能对您有所帮助。。。嗨,维卡斯,非常感谢你的回复。但我的案子不是检测存储设备。我需要编写代码来通知其他非存储USB设备(如鼠标或打印机)的插件活动。您可能指的是#javapos()而不是#jpos()。jpos是一个服务器端iso8583框架,不处理POS硬件。您可能需要更改标签,以便从合适的人那里获得帮助