如何在java中读取磁盘分区

时间:2014-03-25 14:12:37

标签: java

是否可以在java中读取整个磁盘分区?

分区被视为目录(显然),因此我无法创建我需要的FileInputStream。

我想为整个磁盘分区计算哈希值(逐字节),我想知道如何实现这一点。

如果重要的话,它必须在Windows和Linux上都能正常工作。

任何想法都表示赞赏!

2 个答案:

答案 0 :(得分:2)

尝试使用管理员的权限:

File diskRoot = new File ("\\.\X:"); //X is your requested partition's letter 
RandomAccessFile diskAccess = new RandomAccessFile(diskRoot, "r");
byte[] content = new byte[1024];
diskAccess.readFully (content);

您也可以使用BufferedInputStream。这是来自How to access specific raw data on disk from java

的hunsricker答案

命名约定可在此处找到:http://support.microsoft.com/kb/100027

答案 1 :(得分:1)

正如@Michal所说,我已经将分区的路径改为" \\。\ X:"约定。

代码如下所示:

File diskRoot = new File("\\\\.\\F:");
byte[] buffer = new byte[1024];
try (InpuStream stream = new FileInputStream(diskRoot)) {
    while(stream.read(buffer) != -1) {
        //do something with buffer
    }
} catch(IOException e) {
    //handle exception
}

感谢您的评论和答案!