我在 Windows 上遇到了 Java 的这个讨厌的问题。(Linux 上的 Java 没有这个问题。)
在 Linux 上,作为 root 用户,我可以new RandomAccessFile(new File("/dev/sdb"), "rw");
读取和写入我的第二个驱动器的原始扇区。
在 Windows 上,作为管理员,我可以使用RandomAccessFile(new File("//./PhysicalDrive1"), "r");
读取相同第二个驱动器的原始扇区。但是,如果我"rw"
改为指定模式,我会得到一个java.io.FileNotFoundException
.
我可以在 Windows 上使用 JNI+C 作为解决方法,但我想要一个仅基于 Java 的非基于 DLL 的跨平台解决方案。
有没有人有关于如何解决这个问题的任何提示?
编辑:
我得到的确切例外是一些“参数”是“不正确的”:
Exception in thread "main" java.io.FileNotFoundException: \\.\PhysicalDrive1 (The parameter is incorrect)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:241)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:122)
at MyTest.main(MyTest.java:100)