首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 偵測 USB 隨身碟插拔:輪詢檢測磁碟機代碼範例

     編輯:Java 相關知識

前言

Java 無原生 USB 事件通知,常見做法是定期輪詢 File.listRoots() 或嘗試存取磁碟機代碼(C:~J:)。本文提供一個簡單的 CheckU 類別,每 5 秒掃描一次,偵測新磁碟機出現並通知。

程式碼

import java.io.File;
import java.util.*;

public class USBDetector {
    private static final String[] DRIVES = {"C","D","E","F","G","H","I","J"};
    private static final Map state = new LinkedHashMap<>();

    public static void main(String[] args) {
        init();
        detect();
    }

    private static void init() {
        for (String d : DRIVES) {
            state.put(d, new File(d + ":\\").exists());
        }
    }

    private static void detect() {
        while (true) {
            for (String d : DRIVES) {
                File root = new File(d + ":\\");
                boolean now = root.exists();
                if (now && !state.get(d)) {
                    System.out.println("偵測到新裝置: " + d + ":\\");
                    // 這裡可觸發業務邏輯
                }
                if (now != state.get(d)) state.put(d, now);
            }
            try { Thread.sleep(5000); } catch (InterruptedException ignored) {}
        }
    }
}

注意事項

  • 僅適用 Windows 環境;Linux/macOS 掛載點通常在 /media、/mnt,需調整掃描路徑。
  • 輪詢間隔 5 秒為折衷,頻率過高會增加 CPU/磁碟負載。
  • 更穩健的方案:使用 JNA/JNI 呼叫 OS API(如 Windows WM_DEVICECHANGE、Linux udev)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved