Windows上的Java无法写入PhysicalDriveX

Windows上的Java无法写入PhysicalDriveX,java,windows,disk,sector,Java,Windows,Disk,Sector,我在Windows上遇到了Java这个令人讨厌的问题。(Linux上的Java没有这个问题。) 在Linux上,作为root用户,我可以使用newrandomAccessFile(新文件(“/dev/sdb”),“rw”)读取和写入第二个驱动器的原始扇区 在Windows上,作为管理员,我可以使用RandomAccessFile(新文件(“//./PhysicalDrive1”),“r”)至读取相同第二驱动器的原始扇区。但是,如果我指定“rw”模式,则会得到java.io.FileNotFoun

我在Windows上遇到了Java这个令人讨厌的问题。(Linux上的Java没有这个问题。)

在Linux上,作为root用户,我可以使用
newrandomAccessFile(新文件(“/dev/sdb”),“rw”)读取和写入第二个驱动器的原始扇区

在Windows上,作为管理员,我可以使用
RandomAccessFile(新文件(“//./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)
线程“main”java.io.FileNotFoundException:\\.\PhysicalDrive1中的异常(参数不正确) 位于java.io.RandomAccessFile.open(本机方法) 位于java.io.RandomAccessFile。(RandomAccessFile.java:241) 位于java.io.RandomAccessFile。(RandomAccessFile.java:122) 在MyTest.main(MyTest.java:100)
正如@daniel alder提到的,您可以尝试运行以下代码:

String pathname;
// Full drive:
// pathname = "\\\\.\\PhysicalDrive0";
// A partition (also works if windows doesn't recognize it):
pathname = "\\\\.\\GLOBALROOT\\ArcName\\multi(0)disk(0)rdisk(0)partition(5)";

Path diskRoot = ( new File( pathname ) ).toPath();

FileChannel fc = FileChannel.open( diskRoot, StandardOpenOption.READ,
    StandardOpenOption.WRITE );

ByteBuffer bb = ByteBuffer.allocate( 4096 );

fc.position( 4096 );
fc.read( bb );
fc.position( 4096 );
fc.write( bb );

fc.close();

可能是复制品不,不是复制品。原因:我可以让一个C程序在Windows和Linux上读写都很好。我可以用Java程序在Windows和Linux上阅读。然而,我不能让Java程序在Windows上读写*。不,这并不奇怪!我甚至尝试了
“\\.\\PhysicalDrive1”
,但都没有成功。不管怎样,正斜杠在
“r”
模式下工作正常。@StephenC是的,我已经阅读了问题及其答案。显然,你没有仔细阅读我上面所说的内容,可能也投票赞成结束这个问题。如果没有仔细理解问题,请不要这样做。我在Java、Windows和写访问方面遇到了一个问题。。。我的C程序和Java程序之间的所有其他内容都相同。此外,目标问题没有令人满意的答案;“关闭并再次打开”并不能解决导致问题的任何问题。