我正在开发一个自定义 FAT 文件系统资源管理器,并且进展顺利。但是,我想知道是否有更好的方法来有效地读取/写入链图。对于大型设备,这可能会占用大量资源,而且速度可能非常非常慢。尤其是分配空间的时候。
这是我的阅读方式:
public void ReadChainMap()
{
chainMap = new uint[clusterCount];
fx.Io.SeekTo(chainMapOffset);
EndianIo io = new EndianIo(fx.Io.In.ReadBytes((int)chainMapSize), EndianType.BigEndian);
io.Open();
for (int x = 0; x < clusterCount; x++)
chainMap[x] = (chainMapEntrySize == 2) ?
io.In.ReadUInt16() : io.In.ReadUInt32();
io.Close();
}
该链有时可以达到数百兆字节。
这就是我写它的方式。当对chainMap uint数组的分配和修改完成后,它基本上会循环遍历该uint数组并重写整个chainmap。
public void WriteChainMap()
{
EndianIo io = new EndianIo(new byte[chainMapSize],
EndianType.BigEndian);
io.Open(); io.SeekTo(0);
for (int x = 0; x < clusterCount; x++)
if (chainMapEntrySize == 2)
io.Out.Write((ushort)chainMap[x]);
else
io.Out.Write(chainMap[x]);
fx.Io.SeekTo(chainMapOffset);
fx.Io.Out.Write(io.ToArray());
}
我一直在研究缓存系统,但我想对如何让它变得更好有更多的想法。