【问题标题】:Determining the physical location of a file and the device status in Java在 Java 中确定文件的物理位置和设备状态
【发布时间】:2009-10-03 11:12:40
【问题描述】:

我正在编写一个必须维护大量文件目录的程序。这些可能在不同的设备上,我想知道在 Java 中执行此操作的最佳方法是什么。我的意思是我需要:

  • 识别文件(或只是一个目录)所在的设备,并为该设备获取一致的名称或标识符...
  • 能够使用此设备标识符检查设备是否已插入(如 USB 笔、是否安装了 HDD、网络驱动器...)
  • 让它与 Windows、Unix 和其他任何东西兼容...

理想的解决方案是某种设备抽象...在文档中我可以看到 File 与 partitions 相关,但它似乎不是正确的抽象或对象文件系统。或者,如果没有适当的 java 抽象,则可能是在每个系统上处理这种多样性的最佳方法。

【问题讨论】:

    标签: java storage filesystems


    【解决方案1】:

    Java 7 有 Path 类,它是对 File 的改进。查看http://download.java.net/jdk7/binaries/http://java.sun.com/docs/books/tutorial/essential/io/fileio.html 上的教程。

    【讨论】:

    • 目前我想使用 Java 6。Java 7 尚未发布,我想开发可移植的东西
    【解决方案2】:

    如果 (a) 仅在 Windows 上运行并且 (b) 需要管理员权限来运行您的程序是可以接受的,那么这可以通过 JACOB 使用 WMI 来完成。

    特别是看看Win32_LogicalDisk 类。这足以获取驱动器类型(IDE、网络、USB 等)、卷标和卷序列号(这可能足以为您的应用程序唯一标识可移动卷。)

    对于更高级的功能(例如获取驱动器序列号)还有其他类,例如Win32_DiskDrive、Win32_DiskPartition、Win32_PhysicalMedia。然而,这些只有在以管理员身份运行时才能完全工作。

    【讨论】:

      【解决方案3】:

      一个快速的谷歌出现了http://today.java.net/article/2006/07/05/java-and-usb,这可能会有所帮助。至少它描述了几年前 USB 支持的状态。

      我会尝试通过简化它的各个方面来在很大程度上避免这个问题。也就是说,我会将您的目录保留在文件/文件夹抽象中,然后使用上面的文章生成侦听 any USB 活动的代码。

      当然,这种方法需要您在加载目录的该部分之前检查特定文件/文件夹是否存在。此外,您还需要一个线程来不断侦听 USB 事件,然后执行必要的检查任何 USB 设备是否已连接/断开,并再次对文件系统执行必要的检查。

      【讨论】:

        猜你喜欢
        • 2020-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-27
        • 1970-01-01
        相关资源
        最近更新 更多