3

Java ライブラリのみを使用して、ディスクのパーティションとボリュームの情報を取得する方法はありますか? 削除されたファイルの情報も必要です。ディスクは FAT-16 としてフォーマットされ、標準の MBR を備えています。

次の情報が必要です。

a)パーティション情報- ディスク上のパーティションの数を表示し、各パーティションについて、開始セクター、パーティションのサイズ、およびファイル システムの種類を表示します。

b)ボリューム情報– 最初のパーティションのみ、クラスターあたりのセクター数、FAT 領域のサイズ、ルート ディレクトリのサイズ、およびクラスター #2 のセクター アドレスを表示します。

c)削除済みファイル情報- ボリュームのルート ディレクトリにある最初の削除済みファイルについて、そのファイルの名前とサイズ、および最初のクラスターの番号を表示します。そのファイルの内容の最初の 16 文字を表示します (単純なテキスト ファイルであると仮定します)。

4

2 に答える 2

3

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());
        }
    }
}

この回答から引用:

JNA を使用すると、Win32 Kernel32 の GetVolumeInformation() を呼び出して、FAT ファイル システムや NTFS ファイル システムなどのファイル システムの名前を受け取る lpFileSystemNameBuffer パラメータを取得できます。

于 2013-03-27T10:09:05.473 に答える