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 中写入其余位。

这个问题并不完美,但它显示了使用文本(不是二进制数据)的类似技术:将数据插入文本文件

于 2011-06-20T14:16:24.090 回答
0

看一下StreamWriter 类,特别是在Write 方法的这个重载中,它允许您开始写入流中的特定位置。

于 2011-06-20T14:21:07.427 回答