Если вас интересует запись на сырой том под Windows, попробуйте это (требуется Java 7).
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();
Конечно, вы должны убедиться, что устройство доступно для записи и не доступно и не заблокировано системой. Также убедитесь, что ваше приложение работает с необходимыми привилегиями (повышенными привилегиями).
Кстати: использование new RandomAccessFile(drive, "rw")
не работает, потому что Java не открывает дескриптор файла в режиме, совместимом с необработанными устройствами (исключение составляет java.io.FileNotFoundException (The parameter is incorrect)
). Но чтение отлично работает и с RandomAccessFile
.