0

ファイルの読み取りと書き込み用に MFC で記述されたコードがあります。C#用に書き直しています。

私のファイルは、Header * Body * とFooterの 3 つの部分で構成されています。現在、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 コードで使用されているHeaderBody、およびFooterの名前です。

または、読み取りまたは書き込み中に CArchive の現在の場所を見つける方法はありますか。そこからバイト位置を取得すると、それも使用できます。

4

0 に答える 0