删除部分内存映射文件

时间:2014-06-13 20:18:30

标签: java memory-mapped-files

如何只删除内存映射文件的某些部分?

让我们假设一个文件有一个int,一个long和一个包含20个字符的字符串:

[ 4  ][    8   ][         20         ]

[IIII][LLLLLLLL][SSSSSSSSSSSSSSSSSSSS]

我想把空字节数组放在数据的位置,但是数据被替换为null,而不是像我想的那样被翻录。

继承我的代码:

RandomAccessFile memoryMappedFile = new RandomAccessFile("file.txt", "rw");
FileChannel fc = memoryMappedFile.getChannel();
MappedByteBuffer mem = fc.map(FileChannel.MapMode.READ_WRITE, 0, 32);
int num = mem.getInt();
long val = mem.getLong();
byte[] strByte = new byte[20];
String str = mem.get(strByte);

// tring to erase
byte[] EMPTY_INT  = new byte[4];
byte[] EMPTY_LONG = new byte[8];
byte[] EMPTY_STR; = new byte[20];
mem.setPosition(0);
mem.putInt(EMPTY_INT);
mem.putLong(EMPTY_LONG);
mem.put(EMPTY_STR);

我希望在这个操作之后,块就会消失,而不是为空。

0 个答案:

没有答案