我正在尝试使用以下代码访问原始磁盘中偏移量为 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 看看物理驱动器的命名。
关于java - 如何从java访问磁盘上的特定原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2108313/