是否可以在java中读取整个磁盘分区?
分区被视为目录(显然),因此我无法创建我需要的FileInputStream。
我想为整个磁盘分区计算哈希值(逐字节),我想知道如何实现这一点。
如果重要的话,它必须在Windows和Linux上都能正常工作。
任何想法都表示赞赏!
答案 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
}
感谢您的评论和答案!