计算数据长度并将偏移值写入二进制流

时间:2017-06-05 18:46:47

标签: c#

我正在使用BinaryWriter将数据写入gzip压缩文件流。我想在标题中包含偏移值,以便在读取时,我可以只搜索和读取特定部分而不是整个文件。

但是,我没有找到关于如何设置这些值的明确文档。

以下是我目前作家的一个例子:

using (var writer = new BinaryWriter(stream)) {
  foreach (IPersistedObject obj in objectsToWrite) {
     writer.Write(target.Key);
     writer.Write(target.SchemaVersion);
     // writer a bunch of object-specific data
  }
}

但是要在文件头中写一个偏移量,我需要:

  1. 将所有这些编码为二进制
  2. 检查他们的长度
  3. 将其偏移量/长度写入文件头
  4. 然后写实际数据
  5. 我还假设压缩会破坏所有这些。这是它的工作方式还是我错过了其他一些技巧?

    我也不清楚如何正确检查数据的二进制长度。基于现有的文档,我需要先使用Convert.ToString,然后检查它的长度。

0 个答案:

没有答案