【发布时间】:2022-01-01 10:18:06
【问题描述】:
我正在将一个对象序列化为流以存储为文件,然后检索并尝试反序列化该对象,但解析时出错。下面是代码:
var content = JsonConvert.SerializeObject(data);
var output = new MemoryStream();
var writer = new StreamWriter(output, Encoding.UTF8);
writer.Write(content);
writer.Flush();
//write to some file...
//when reading the file
Stream filestream;
//filestream opens some file stream
byte[] buffer = new byte[4096]
using(MemoryStream ms = new MemoryStream()){
int read;
while((read = filestream.Read(buffer, 0, buffer.Length)) > 0){
ms.Write(buffer, 0, read);
}
var data = Encoding.UTF8.GetString(ms.ToArray());
//encounters error here. I can see that first few chars of the string are question marks.
JsonConvert.DeserializeObject<T>(data);
【问题讨论】:
-
我最快的猜测是你的缓冲区太小而且内容大于 4096 字节,所以你没有读回整个内容。
-
旁白:我希望这是伪代码,因为你需要
using块。您可以使用CopyTo而不是循环