【发布时间】:2015-11-01 19:31:25
【问题描述】:
我正在将数据加密到流中。例如,如果我的数据是 Int32 类型,我将使用 BitConverter.GetBytes(myInt) 获取字节,然后将这些字节写入流中。
为了读回数据,我读取sizeof(Int32) 以确定要读取的字节数,读取这些字节,然后使用BitConverter.ToInt32(byteArray, 0) 将字节转换回Int32。
那么我该如何使用字符串呢?写字符串没问题。但是读取字符串时的诀窍是知道要读取多少字节,然后才能将其转换回字符串。
我发现了类似的问题,但他们似乎假设字符串占据了整个流并且只是读取到流的末尾。但在这里,我可以在字符串前后添加任意数量的其他项目。
请注意,StringReader 在这里不是一个选项,因为我想要处理可能大于我想要加载到内存中的文件数据的选项。
【问题讨论】:
-
您可能希望考虑使用BinaryReader/BinaryWriter 来读取和写入数据。它有处理字符串的方法。
-
@ScottChamberlain:谢谢,但最终我使用的是
CryptoStream。 -
你可以做
new BinaryReader(yourCryptoStream),只需将Stream输入到二进制读取器/写入器的构造函数中。