Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java检测USB设备的插入和输出(类似于监听)?不仅仅是潘德里夫_Java_Jakarta Ee_Usb_Javapos - Fatal编程技术网

用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存储设备,以

如何使用Java检测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硬件。您可能需要更改标签,以便从合适的人那里获得帮助