有没有办法只使用Java库获取磁盘分区和卷信息?我还需要删除文件信息。磁盘格式化为FAT-16并具有标准MBR。
我需要以下信息:
a)分区信息 - 显示磁盘上的分区数和每个分区的数量 分区显示起始扇区,分区大小和文件系统类型。
b)卷信息 - 仅对于第一个分区,显示每个扇区的数量 集群,FAT区域的大小,根目录的大小和扇区地址 集群#2。
c)删除文件信息 - 对于卷根目录下的第一个已删除文件, 显示该文件的名称和大小,以及第一个集群的编号。显示 该文件内容的前16个字符(假设它是一个简单的文本文件)。
答案 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文件 系统