0

我有一个用 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 代码正在使用的HeaderBodyFooter名称。

或者有什么方法可以在读取或写入时找出CArchive的当前位置。如果我从那里获得字节位置,我也可以使用它。

4

0 回答 0