Java是否存在与平台无关的方式来检测文件所在的驱动器类型?基本上我有兴趣区分:硬盘,可移动驱动器(如USB棒)和网络共享.JNI/JNA解决方案没有帮助.可以假设Java 7.
您可以使用Java使用以下命令执行cmd:
fsutil fsinfo drivetype {drive letter}
Run Code Online (Sandbox Code Playgroud)
结果将为您提供以下信息:
C: - Fixed Drive
D: - CD-ROM Drive
E: - Removable Drive
P: - Remote/Network Drive
Run Code Online (Sandbox Code Playgroud)
FileSystemViewSwing 中的类具有一些支持检测驱动器类型的功能(参见isFloppyDrive, isComputerNode)。恐怕没有标准方法来检测驱动器是否通过 USB 连接。
人为的、未经测试的示例:
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;
....
JFileChooser fc = new JFileChooser();
FileSystemView fsv = fc.getFileSystemView();
if (fsv.isFloppyDrive(new File("A:"))) // is A: a floppy drive?
Run Code Online (Sandbox Code Playgroud)
在 JDK 7 中还有另一种选择。我没用过,不过FileStoreAPI有type方法。文档说:
此方法返回的字符串的格式是高度特定于实现的。例如,它可以指示所使用的格式或者文件存储是本地还是远程。
显然使用它的方法是这样的:
import java.nio.*;
....
for (FileStore store: FileSystems.getDefault().getFileStores()) {
System.out.printf("%s: %s%n", store.name(), store.type());
}
Run Code Online (Sandbox Code Playgroud)