我有一个用 MFC 编写的用于文件读写的代码。我正在为 C# 重写它。
我的文件由三部分组成,Header * Body * 和Footer。现在在 MFC 代码中,CArchive 可以写入/读取任何这些部分。这是由COleStreamFile::OpenStream完成的。在这个方法中,我们给出了要读取的部分,这将返回指向文件中该位置的流。CArchive 然后使用流和读/写文件。
COleStreamFile stream;
//Stream is pointed to footer location.
stream.OpenStream(m_pStg, "Footer", nOpenFlags, pError); // pStg is LPSTORAGE
CArchive ar(&stream, CArchive::load);
现在,当我执行ar >>或ar <<之后,我没有从头开始读取文件。它正在从中间或结尾读取(取决于流)。现在我想要的是将此代码转换为 C#。什么是C#中COleStreamFile::OpenStream的替代品。
这是我到目前为止所做的。
using (var stream = new FileStream(filePath, FileMode.Open))
{
using (var binaryReader = new BinaryReader(stream)
{
}
}
现在这里流指向开始。我想我可以让它从特定字节读取。但我不知道那个字节位置。我所知道的是MFC 代码正在使用的Header、Body和Footer名称。
或者有什么方法可以在读取或写入时找出CArchive的当前位置。如果我从那里获得字节位置,我也可以使用它。