2

私はこれをできるだけ簡単にしようとします。この質問は、単にバイトの読み取りと書き込みを伴うものではありません。この VB6 コードと C# コードの間の正確な翻訳を探しています。これが常に可能であるとは限らないことはわかっていますが、誰かがいくつかのアイデアを持っていると確信しています!

VB6 コード & 説明:

以下のコードは、ファイルの特定の部分にデータを書き込みます。

[ Put [#]filenumber, [byte position], varname ].

私が把握するのに苦労しているのは*バイト位置*です-これを手伝っていただければ幸いです!

Dim file, stringA as string

Open file for Binary As #1
    lPos = 10,000
    stringA = "ThisIsMyData"
Put #1, lPos, stringA

Close #1

それで、もう一度バイト位置の助けを探しています。この例では、バイト位置は lPos で表されていました。

ヘンクの編集 -

バイナリデータを読み取ります。このバイナリ データには、置き換える必要のある文字がいくつかあります。このため、VB6 のinstr関数を使用してこのデータの位置を取得します (長さは事前にわかっています)。次に、Vb6 のPut関数を使用して、このデータを新しく見つけた位置に書き込みます。これにより、古いデータが新しいデータで上書きされます。これが役に立ったことを願っています!

誰にも役立つ場合は、機能に関する詳細情報を次に示しますPut

どうもありがとう、エヴァン

4

3 に答える 3

4

BinaryWriterを使用できませんか?

例えば:

FileStream fs = new FileStream(file, FileMode.Open);
BinaryWriter w = new BinaryWriter(fs);

w.Seek(10000, SeekOrigin.Origin);
w.Write(encoding.GetBytes("ThisIsMyData"));

w.Flush();
w.Close();
fs.Close();
于 2011-06-20T14:31:55.083 に答える
2

これは、StreamReader と StreamWriter を使用して行うことができます。

私はこのようなことを試してみます:

  • 最初の n ビットを読み取り、StreamWriter を使用してそれらを新しいストリームに書き込みます。
  • 同じ StreamWriter を使用して、挿入する新しいビットを書き込みます。
  • 最後に、StreamReader から残りのビットを書き込みます。

この質問は完全には当てはまりませんが、テキスト (バイナリ データではない) を使用した同様の手法を示しています: Insert data into text file

于 2011-06-20T14:16:24.090 に答える
0

特に、このWrite メソッドのオーバーロードでStreamWriter クラスを見てください。これにより、ストリーム内の特定の場所への書き込みを開始できます。

于 2011-06-20T14:21:07.427 に答える