获取分区和卷信息

时间:2013-03-27 10:04:02

标签: java disk-partitioning

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

我需要以下信息:

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

b)卷信息 - 仅对于第一个分区,显示每个扇区的数量 集群,FAT区域的大小,根目录的大小和扇区地址 集群#2。

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

1 个答案:

答案 0 :(得分: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文件   系统