如何从java访问磁盘上的特定原始数据

2024-01-21

我正在尝试使用以下代码来访问原始磁盘中偏移量为 50 字节的一个字节。

randomAccessFile = new RandomAccessFile("C:", "r");
randomAccessFile.seek(50);
byte[] buffer = new byte[1];
randomAccessFile.read(buffer);

但我得到的只是以下错误:

java.io.FileNotFoundException: C: (Acceso denegado)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:98)
at pru.lseek.main(lseek.java:26)

有没有办法从java访问驱动器中的精确字节?


我自己正在寻找从物理驱动器访问原始数据的可能性。现在,当我让它发挥作用时,我只想告诉你如何做。您可以直接从 java 中访问原始磁盘数据...只需使用管理员权限运行以下代码:

    File diskRoot = new File ("\\\\.\\PhysicalDrive0");
    RandomAccessFile diskAccess = new RandomAccessFile (diskRoot, "r");
    byte[] content = new byte[1024];
    diskAccess.readFully (content);

因此,您将获得系统上第一个物理驱动器的第一个 KB。要访问逻辑驱动器(如上所述),只需将“PhysicalDrive0”替换为驱动器号,例如'D:'

哦,是的...我在 Win 7 系统上尝试使用 Java 1.7 ...

只需查看物理驱动器的命名即可http://support.microsoft.com/kb/100027/en-us http://support.microsoft.com/kb/100027/en-us

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从java访问磁盘上的特定原始数据 的相关文章

随机推荐