在将Java项目转换为C#时,我陷入了以下困境:

RandomAccessFile raf = new RandomAccessFile(fileName, "r");
FileChannel channel = raf.getChannel();
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, length);


我不熟悉内存映射的概念,我在C#中找到了一个MemoryMappedFile类,但是不知道如何像上面的Java代码一样正确使用它(MappedByteBuffer用于获取大的二进制文件,大约600-700MB)。

谁能告诉我如何正确翻译以上内容?

最佳答案

MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(fileName, FileMode.Read);
using (MemoryMappedViewStream vs = mmf.CreateViewStream()) {
    // perform stream operations
}


MemoryMappedViewStream是内存上的薄板。

08-28 18:46