У меня есть код, написанный на 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 >> или же Арканзас << Я не читал файл с самого начала. Это чтение из середины или конца (зависит от потока). Теперь я хочу преобразовать этот код в C #. Какая замена для COleStreamFile :: OpenStream в C #.
Вот что я сделал до сих пор.
using (var stream = new FileStream(filePath, FileMode.Open))
{
using (var binaryReader = new BinaryReader(stream)
{
}
}
Теперь здесь поток указывает на начало. Я думаю, что я могу дать это для чтения из конкретного байта. Но я не знаю это местоположение байта. Что я знаю заголовок, тело а также нижний колонтитул имена, которые используются кодом MFC.
Или есть какой-нибудь способ узнать текущее местоположение CArchive, когда он читает или пишет. Если я получу оттуда местоположение в байтах, я тоже смогу это использовать.
Задача ещё не решена.
Других решений пока нет …