如何从Linux上的Java中检测文件系统类型?

时间:2015-07-09 08:22:49

标签: java jna

我想检查一个文件系统是ntfs还是fat32等等,当我想运行它时我得到了这个:

java.lang.UnsatisfiedLinkError: Unable to load library 'Kernel32': Native library (linux-x86-64/libKernel32.so) not found in resource path ([file:/home/nszabo/workspace/Vidux/bin/, file:/home/nszabo/workspace/Vidux/external/common/org-json-2010-12-28.jar, and so on...

我试过了:

java -Djava.library.path="VolumeInformation.java"> -jar /usr/share/java/jna.jar Error: Could not find or load main class .usr.share.java.jna.jar

有什么问题?谢谢大家的帮助!

更新

这是我的代码放弃错误。

    Kernel32.INSTANCE.GetVolumeInformation(
            "C:\\", 
            lpVolumeNameBuffer, 
            nVolumeNameSize, 
            lpVolumeSerialNumber, 
            lpMaximumComponentLength, 
            lpFileSystemFlags, 
            lpFileSystemNameBuffer, 
            nFileSystemNameSize);

下一个:

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

和Kernel32.java中的最后一个:

public Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("Kernel32", Kernel32.class, WIN32API_OPTIONS);

2 个答案:

答案 0 :(得分:0)

在Linux中,您可以使用Runtime.exec()运行mount命令并解析输出以检查安装了哪些文件系统以及它们具有哪种类型。

答案 1 :(得分:0)

您正在尝试在Linux上运行Windows API函数。你需要调用适合linux的文件系统检查功能。

要这样做,需要单独的映射(getfsfile("/path/to/fs")并查看返回结构中的fs_vfstype字段),或者您可以调用mount命令作为进程并按照建议解析其结果@拉尔夫 - 间皮特。