Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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中确定文件的物理位置和设备状态_Java_Storage_Filesystems - Fatal编程技术网

在Java中确定文件的物理位置和设备状态

在Java中确定文件的物理位置和设备状态,java,storage,filesystems,Java,Storage,Filesystems,我正在写一个程序,它必须保存一个大的文件目录。这些可能在不同的设备上,我想知道用Java实现这一点的最佳方法是什么。我的意思是我需要: 识别文件所在的设备(或只是一个目录),并获取此设备的名称或标识符,该名称或标识符将保持一致 能够使用此设备标识符检查设备是否已插入(如USB笔、是否安装了HDD、网络驱动器…) 让它与Windows、Unix和其他任何东西兼容 理想的解决方案是某种设备抽象。。。在文档中,我可以看到文件与分区相关,但它似乎不是文件系统的适当抽象或对象。或者,如果没有适当的ja

我正在写一个程序,它必须保存一个大的文件目录。这些可能在不同的设备上,我想知道用Java实现这一点的最佳方法是什么。我的意思是我需要:

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

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

Java7有Path类,这是对文件的改进。如果可以(a)仅在Windows上运行,并且(b)需要管理员权限才能运行您的程序,则可以通过via完成

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

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

一个快速的google出现,这可能会有所帮助。至少它描述了几年前USB支持的状态

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


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

目前我想使用Java 6。Java7还没有发布,我想谈谈便携设备