Windows上的Java无法写入PhysicalDriveX
我在Windows上遇到了Java这个令人讨厌的问题。(Linux上的Java没有这个问题。) 在Linux上,作为root用户,我可以使用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
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程序之间的所有其他内容都相同。此外,目标问题没有令人满意的答案;“关闭并再次打开”并不能解决导致问题的任何问题。