在将 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是内存上的一层薄薄的单板。
关于java - C# 相当于 Java 内存映射方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30716027/