Я создал экземпляр MappedBytes
для файла, который я использую в качестве общего кэша между различными процессами Java.
Я хотел бы иметь возможность выделить дополнительные экземпляры MappedByte (или ByteBuffer илилюбой другой экземпляр) из оригинала, который обеспечивает прямой доступ для чтения / записи к подмножеству базового файла.
Я провел сегодня, экспериментируя с различными методами, но такими опциями, как subBytes()
, rawCopy()
и copyTo()
кажется, что все создают локальные копии базового файла, а не обращаются к нему напрямую.
Например:
File tmpFile = new File(System.getProperty("java.io.tmpdir"), "data.dat");
MappedFile mappedFile = MappedFile.mappedFile(tmpfile, 1000, 100, 10, false);
MappedBytes original = MappedBytes.mappedBytes(mappedFile);
original.zeroOut(0, 1000);
original.writeInt(0, 1234);
BytesStore copy = original.bytesStore().subBytes(0, 200);
// Print out the int in the two BytesStores.
// This shows that the copy has the same contents of the original.
System.out.println("Original(0): " + original.readInt(0));
System.out.println("Copy(0): " + copy.readInt(0));
// Now modify the copy and print out the new int in the two BytesStores again.
copy.writeInt(50, 4321);
System.out.println("Original(50): " + original.readInt(50));
System.out.println("Copy(50): " + copy.readInt(50));
Выводит:
Original(0): 1234
Copy(0): 1234
Original(50): 0
Copy(50): 4321
Копия была изменена, но не оригинал.Я хотел бы, чтобы оригинал был изменен, могут ли хронические байты сделать это?
Спасибо за вашу помощь, Джош.