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

标签 java drive

我正在尝试使用以下代码访问原始磁盘中偏移量为 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/

相关文章:

java在String.split中使用正则表达式来准备json参数

java - 'Controller' 中构造函数的参数 0 需要找不到类型为 'service' 的 bean。不工作 : adding annotations, 组件扫描

Java:简单的客户端服务器消息交换不起作用

javascript - Jquery 适用于一个域,不适用于另一个域 - 使用*相同的*代码

google-api - Google 的 File Insert v2 API 无法识别 MIME TYPE application/vnd.google-apps.document

javascript - 我需要使用附加脚本覆盖现有的 Google 表格文件

java - 如何停止 JFrame 在屏幕/监视器上的移动?

google-api - 查找文件的父 ID : Google Drive API V3

git - 我已经更新了 Git 和 'lost my Head' ,所以现在我无法提交

java - Spring MultipartFiles 在混合多部分中重复文件