【问题标题】:Get partition and volume information获取分区和卷信息
【发布时间】:2013-03-17 08:58:37
【问题描述】:

有没有办法只使用 Java 库来获取磁盘分区和卷信息?我还需要删除的文件信息。磁盘格式化为 FAT-16 并具有标准 MBR。

我需要以下信息:

a) 分区信息 - 显示磁盘上的分区数以及每个 partition 显示起始扇区、分区大小和文件系统类型。

b) 卷信息 – 仅针对第一个分区,显示每个分区的扇区数 簇、FAT区大小、根目录大小、扇区地址 集群 #2。

c) 已删除文件信息 - 对于卷根目录中的第一个删除文件, 显示该文件的名称和大小,以及第一个簇的数量。显示 该文件内容的前 16 个字符(假设它是一个简单的文本文件)。

【问题讨论】:

  • 显然他们希望您对分区表、BIOS 参数块和根目录执行原始读取。

标签: java disk-partitioning


【解决方案1】:

如果你需要Getting file system details in Java试试这个:

import javax.swing.*;
import java.awt.*;
import java.awt.Color;
import java.awt.event.*;
import java.io.File;
import javax.swing.filechooser.FileSystemView;

public class Main {

    public static void main(String[] args) {

        System.out.println("File system roots returned byFileSystemView.getFileSystemView():");
        FileSystemView fsv = FileSystemView.getFileSystemView();
        File[] roots = fsv.getRoots();
        for (int i = 0; i < roots.length; i++) {
            System.out.println("Root: " + roots[i]);
        }

        System.out.println("Home directory: " + fsv.getHomeDirectory());

        System.out.println("File system roots returned by File.listRoots():");
        File[] f = File.listRoots();
        for (int i = 0; i < f.length; i++) {
            System.out.println("Drive: " + f[i]);
            System.out.println("Display name: " + fsv.getSystemDisplayName(f[i]));
            System.out.println("Is drive: " + fsv.isDrive(f[i]));
            System.out.println("Is floppy: " + fsv.isFloppyDrive(f[i]));
            System.out.println("Readable: " + f[i].canRead());
            System.out.println("Writable: " + f[i].canWrite());
            System.out.println("Total space: " + f[i].getTotalSpace());
            System.out.println("Usable space: " + f[i].getUsableSpace());
        }
    }
}

引用自this answer

使用 JNA,可以调用 Win32 Kernel32 的 GetVolumeInformation() 检索接收名称的 lpFileSystemNameBuffer 参数 文件系统,例如 FAT 文件系统或 NTFS 文件 系统

【讨论】:

  • 谢谢,但这并不是我所需要的。我在顶部编辑了我的帖子,因此您现在可以看到我想要获得的详细信息。
  • 您的答案仅适用于为每个分区使用单独根的系统,因此它不适用于任何类 Unix 系统(包括 Linux 和 MacOSX:唯一的根是 /)或较新的 Windows(虽然大多数分区都有自己的根,但其中一些可以挂载为目录)。
猜你喜欢
  • 2019-03-11
  • 1970-01-01
  • 2023-03-11
  • 2017-12-06
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 2013-08-09
  • 2023-03-23
相关资源
最近更新 更多