【问题标题】:Read file bytes using MemoryMappedFile使用 MemoryMappedFile 读取文件字节
【发布时间】:2012-12-22 12:27:18
【问题描述】:

如何使用MemoryMappedFile 读取文件字节并将其放入byte[] 数组中?

【问题讨论】:

    标签: c# memory-mapped-files


    【解决方案1】:

    假设您只想读取文件的一部分,这样的事情应该可以工作:

    long offset = 0x10000000; // 256 megabytes 
    long length = 100; 
    using (MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(@"c:\Test.data"))
        {
            using (MemoryMappedViewStream stream = CreateViewStream(offset, length))
            {
                byte[length] bytes;
                int bytesRead = stream.Read(bytes, 0, (int)length);
            }
        }
    

    如果你想读取整个文件,你真的不应该首先使用MemoryMappedFile 对象。

    【讨论】:

    • 请注意,stream.Read 读取到 bytes 的字节数可能少于 length
    • @dtb 好点,还不清楚。我更新了我的答案。谢谢!
    • 没有。对不起。我对 Compact Framework 没有太多经验。如果看起来紧凑的框架不支持MemoryMappedFile,您可能只需要使用标准的FileStreamSeek 方法在文件中跳转。
    • @Kostadin 哎呀,忘了在我最后的评论中包含你的名字,这样你就会收到我回复的通知......
    猜你喜欢
    • 2018-12-15
    • 2012-01-24
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多