【发布时间】:2013-12-01 14:11:33
【问题描述】:
我有一个带有内存流的二进制写入器,如果发生一种情况,我需要清除它:
public void Execute() {
MemoryStream memoryStream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(memoryStream);
Log log = new Log(writer);
log.Write("OK1");
...
// If condition
memoryStream = new MemoryStream();
...
log.Write("OK2");
...
}
public class Log {
private BinaryWriter log;
public Log(BinaryWriter bw)
{
log = bw;
}
public void write(string msg)
{
log.Write(msg);
}
}
但问题是内存流是空的。我已经尝试再次创建一个新的 BinaryWriter:
public void Execute() {
MemoryStream memoryStream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(memoryStream);
Log log = new Log(writer);
log.Write("OK1");
...
// If condition
memoryStream = new MemoryStream();
writer = new BinaryWriter(memoryStream);
...
log.Write("OK2");
...
}
public class Log {
private BinaryWriter log;
public Log(BinaryWriter bw)
{
log = bw;
}
public void write(string msg)
{
log.Write(msg);
}
}
但是 BinaryWriter 和 MemoryStream 都是空的。
如何使用 memorystream 清除 binarywriter?我需要将内存流的最终内容写入文件。
谢谢!
【问题讨论】:
-
您在
recordStream上创建二进制写入器,而不是在memoryStream上。 -
对不起,我重命名了这篇文章中的变量以使其更清晰。我已经在代码中修复了它。我认为将内存流识别到 MemorySteam 更容易。在我的代码中只有一个 MemoryStream 和一个 BinaryWriter,所以其他引用没有问题 :)
标签: c# c#-4.0 memorystream binarywriter