在 C# 中从字符串创建 MemoryStream
单元测试通常需要模拟来自文本文件的输入流。 此示例演示了一种简单有效的方法 GenerateStreamFromString
,用于从字符串创建 MemoryStream
。
GenerateStreamFromString
实施
以下函数有效地将字符串转换为 MemoryStream
:
<code class="language-csharp">public static Stream GenerateStreamFromString(string s) { var stream = new MemoryStream(); var writer = new StreamWriter(stream); writer.Write(s); writer.Flush(); stream.Position = 0; return stream; }</code>
使用示例:
<code class="language-csharp">using (var stream = GenerateStreamFromString("a,b \n c,d")) { // Process the stream here }</code>
处理 StreamWriter 处置
using
语句会自动处理 StreamWriter
,但这也会关闭 MemoryStream
。 由于我们需要返回 MemoryStream
,因此我们避免显式处置 StreamWriter
。 StreamWriter
的 Dispose
方法仅关闭底层流,这是此场景中所需的行为。
此方法适用于所有 .NET 版本,与依赖于 .NET 4.5 及更高版本中引入的 StreamWriter
重载的替代方案不同。 这些重载允许在处理后保持底层流打开,但我们的方法保持更广泛的兼容性。
有关管理流处置的更多详细信息,请参阅讨论在不关闭基础流的情况下关闭 StreamWriter
的技术的资源。
以上是如何在 C# 中从字符串创建 MemoryStream?的详细内容。更多信息请关注PHP中文网其他相关文章!