使用 StreamWriter 写入 MemoryStream 返回空

2024-02-17

我不确定我做错了什么,看过很多例子,但似乎无法让它发挥作用。

public static Stream Foo()
{
    var memStream = new MemoryStream();
    var streamWriter = new StreamWriter(memStream);

    for (int i = 0; i < 6; i++)
        streamWriter.WriteLine("TEST");

    memStream.Seek(0, SeekOrigin.Begin);
    return memStream;
}

我正在对这个方法做一个简单的测试,试图让它通过,但无论如何,我的收集计数是0。

[Test]
public void TestStreamRowCount()
{
    var stream = Foo();

    using (var reader = new StreamReader(stream))
    {
        var collection = new List<string>();
        string input;

        while ((input = reader.ReadLine()) != null)
            collection.Add(input);

        Assert.AreEqual(6, collection.Count);
    }
}

注意:我更改了上面的一些语法,但没有在测试方法中进行编译。更重要的是第一个方法似乎返回一个空流(我的 reader.ReadLine() 总是读取一次)。不确定我做错了什么。谢谢。


你忘记冲水StreamWriter实例。

public static Stream Foo()
{
    var memStream = new MemoryStream();
    var streamWriter = new StreamWriter(memStream);

    for (int i = 0; i < 6; i++)
        streamWriter.WriteLine("TEST");

    streamWriter.Flush();                                   <-- need this
    memStream.Seek(0, SeekOrigin.Begin);
    return memStream;
}

另请注意StreamWriter应该被处置,因为它实现了IDisposable,但这又会产生另一个问题,它会关闭底层MemoryStream以及。

您确定要退回MemoryStream here?

我会将代码更改为:

public static byte[] Foo()
{
    using (var memStream = new MemoryStream())
    using (var streamWriter = new StreamWriter(memStream))
    {
        for (int i = 0; i < 6; i++)
            streamWriter.WriteLine("TEST");

        streamWriter.Flush();
        return memStream.ToArray();
    }
}

[Test]
public void TestStreamRowCount()
{
    var bytes = Foo();

    using (var stream = new MemoryStream(bytes))
    using (var reader = new StreamReader(stream))
    {
        var collection = new List<string>();
        string input;

        while ((input = reader.ReadLine()) != null)
            collection.Add(input);

        Assert.AreEqual(6, collection.Count);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 StreamWriter 写入 MemoryStream 返回空 的相关文章

随机推荐

  • Richfaces 组合框选择更改事件

    我有这个代码
  • Angular CLI ng 构建 - 未定义:8:53494:属性缺少“:”

    Angular CLI 构建失败 并显示以下内容 ng build Browser application bundle generation complete Copying assets complete Index html gene
  • 为什么它不将更改从 datagridview 保存到数据表中?

    我已经绑定了datagridview with datatable Growns 我的主要目标是 用户可以使用datagridview 数据网格视图1 填充和更新数据以及何时button SAVE单击后 所有数据将保存到数据表中 因为我需要
  • 我正在寻找一个使用 MS Visual C++ Express 的 C++ 简单套接字接口

    C 中是否有一个简单的套接字接口可以与 MS Visual Studio Express Edition 一起使用 我知道有 WinSock 库 我想我正在寻找一个更易于使用的包装器 我认为 java net 库足够简单 但是 我必须使用
  • Apache 2.4 - 删除 |删除|卸载

    我在网上搜索了很长一段时间 但找不到如何完全地删除阿帕奇 2 4 Using Windows 7的c apache24 我已经尝试了所有命令 但没有任何效果 httpd k shutdown httpd k stop httpd k uni
  • 无法找到用于设置首选项 Eclipse 的 Android SDK 位置

    为了开始 Android 开发 我安装了 JDK 7 下载并安装 EclipseE 在 Windows 7 上驱动 然后按照步骤进行 使用Eclipse安装Android ADT 到目前为止一切都很好 但在尝试设置首选项时它不接受任何文件夹
  • 具有绝对位置的引导工具提示

    当使用 Bootstrap 工具提示绝对定位元素时 我遇到了奇怪的问题 工具提示未根据父元素正确呈现 请参阅小提琴 http jsfiddle net QsYPv 152 1 当父元素没有绝对定位时 一切都工作正常 有什么想法如何解决这个问
  • Stripe - 付款意图(3d 安全问题)

    我确实在我的网站上实现了付款意图 现在与此测试卡完美配合4242 4242 4242 4242 但对于其他需要 3d 安全方法的卡 我采取此错误 Invalid PaymentIntent status 我使用的代码与存在的标准代码相同St
  • WCF 的开源替代品 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java 中是否有更优雅的处理列表的方法? (Python VS Java)

    我确实喜欢在 Python 中处理列表的方式 它使任何递归解决方案看起来简单干净 例如 在 Python 中获取列表中元素的所有排列的典型问题如下所示 def permutation recursion numbers sol if not
  • 带有 @FocusState 和焦点更改处理的 SwiftUI 列表

    我想用一个List FocusState跟踪焦点 以及 onChanged of focus 确保当前聚焦的字段可见ScrollViewReader 问题是 当一切都设置在一起时List在滚动过程中不断重建 使得滚动不那么平滑 我发现Lis
  • 如何在 Kotlin 中从枚举创建编译时常量?

    我有一个注释需要defaultValue为编译时常数 我拿defaultValue from enum below enum class RaceType MARATHON SPRINT companion object fun apply
  • 鼠标悬停时反应改变反应图标颜色

    当我用鼠标悬停在反应图标上时 我想更改反应图标的颜色 使用下面给出的代码 只有当鼠标悬停在图标的线条上时 图标才会改变颜色 例如 对于邮件图标 只有当光标悬停在图标的线条上而不是空白处时 颜色才会改变 如果我将鼠标悬停在图标的任何部分上 如
  • 接口“递归”和引用计数

    我的接口有一个小问题 这是伪代码 type Interface1 interface end Interface2 interface end TParentClass class TInterfacedObject Interface1
  • Discord.NET 将消息发送到一台特定服务器中的一个特定通道

    所以我试图向特定频道发送消息 但我一直在寻找并发现我看不到任何可以做到这一点的方法 我可能做错了什么 或者我在错误的区域寻找 我在谷歌上查找过 但找不到答案 这是我试图找到它时的代码 discord GetGuild serverid Ge
  • 如何将图像设置为图表轴或沿图表轴设置?

    我正在尝试使用彩色光谱带作为图表的轴 这个想法是将图像上的颜色与其沿底部 x 轴相关的波长相匹配 条带需要更改大小以匹配图表区域的变化 并扩展和收缩部分以匹配图表区域中的滚动缩放 我尝试过使用图像注释 但随着图表区域的变化 注释尺寸保持固定
  • 快速更改 SSIS 包数据源参数以方便迁移

    我需要将 SQL 数据库从 Sybase 迁移到 MS SQL Server 在生产服务器上进行实际迁移之前 我首先使用 SQL Server Management Studio 的导入 导出向导创建了一个 SSIS 包 以便与其他数据库进
  • 如何计算 python 中我的列中的行的编辑比/距离?

    我有一个只有一列的数据框 该列中有 1000 行 我需要比较所有行并找到所有行的编辑距离 我如何计算Python中的比率或距离 我有一个数据框如下 Df StepDescription click confirm button when d
  • 在 django admin 中动态设置 readonly_fields

    我可以改变吗readonly fields in my TranslationAdmin类依赖于某个字段的值Translation被查看 如果是这样 我该怎么做 我唯一想到的就是制作一个小部件来查看Translation并决定是否成为只读小
  • 使用 StreamWriter 写入 MemoryStream 返回空

    我不确定我做错了什么 看过很多例子 但似乎无法让它发挥作用 public static Stream Foo var memStream new MemoryStream var streamWriter new StreamWriter