2012-12-22 46 views

回答

6

假设你只需要读取文件的一部分,这样的事情应该工作:

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对象第一个地方。

+1

请注意,'stream.Read'可能会读取长度小于'bytes'字节的字节。 – dtb

+0

@dtb好点,那还不清楚。我更新了我的答案。谢谢! –

+0

你知道如何在Compact Framework中使用相同的技巧吗? – Kostadin