COleStreamFile:: Замена OpenStream в C#

У меня есть код, написанный на MFC для чтения и записи файлов. Я переписываю это для C#.

Мой файл состоит из трех частей: заголовок *тело* и нижний колонтитул. Теперь в коде 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#. Что является заменой для COleStreamFile::OpenStream в C#.

Вот что я сделал до сих пор.

using (var stream = new FileStream(filePath, FileMode.Open))
{
    using (var binaryReader = new BinaryReader(stream)
    {
    }
}

Теперь здесь поток указывает на начало. Я думаю, что я могу дать это для чтения из конкретного байта. Но я не знаю это местоположение байта. Что я знаю, так это имена заголовков, тел и нижних колонтитулов, которые используются кодом MFC.

Или есть какой-нибудь способ узнать текущее местоположение CArchive, когда он читает или пишет. Если я получу оттуда местоположение в байтах, я тоже смогу это использовать.

0 ответов

Другие вопросы по тегам