实验用64位程序,可以读8G以上文件,取数据时按照偏移量进行取数据,可以取单个,也可以取一段。
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.MemoryMappedFiles;
class Program
{
static void Main(string[] args)
{
using (FileStream fileStream = new FileStream(@"d:\data.bin", FileMode.Create))
{
using (BinaryWriter writer = new BinaryWriter(fileStream))
{
for (int i = 0; i < 800000000; i++)
{
int intValue = i;
int floatValue = 2;
int stringValue = 3;
writer.Write(intValue);
writer.Write(floatValue);
writer.Write(stringValue);
}
}
}
using (var mmf = MemoryMappedFile.CreateFromFile(@"d:\data.bin", FileMode.Open, "data.bin"))
{
using (var accessor = mmf.CreateViewAccessor())
{
for(int i = 0;i<1000;i++)
{
int strLength = accessor.ReadInt32(1200*i);
Console.WriteLine(strLength);
}
}
}
}
}