StreamWriter 在行尾添加额外的 \r

2023-11-26

我创建了一个类,负责生成一个文本文件,其中每一行代表“MyDataClass”类的对象的信息。下面是我的代码的简化:

public class Generator
{
    private readonly Stream _stream;
    private readonly StreamWriter _streamWriter;
    private readonly List<MyDataClass> _items;

    public Generator(Stream stream)
    {
        _stream = stream;
        _streamWriter = new StreamWriter(_stream, Encoding.GetEncoding("ISO-8859-1"));
    }

    public void Generate()
    {
        foreach (var item in _items)
        {
            var line = AnotherClass.GetLineFrom(item);

            _streamWriter.WriteLine(line);
        }

        _streamWriter.Flush();
        _stream.Position = 0;
    }
}

我这样称呼这个类:

using (var file = new FileStream("name", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    new Generator(file).Generate();
}

当我在 Visual Studio 上运行应用程序时(我使用运行 (Ctrl+F5)、调试 (F5)、调试和发布模式进行测试),一切都按照计划进行。但我在 IIS 服务器中发布应用程序,现在 StreamWriter 类在行尾之前添加了一个额外的 \r。

检查两个生成文件的十六进制读数:

在 Visual Studio 中运行:http://www.jonataspiazzi.xpg.com.br/hex_vs.bmp

在IIS中运行:http://www.jonataspiazzi.xpg.com.br/hex_iis.bmp

我已经检查过一些事情:

写下line变量(在var line = AnotherClass.GetLineFrom(item);) 在日志中查看该类是否不包含额外的 '\r'AnotherClass.

没有结果,最后一个字符line是一个像预期的常规字符(在上面的示例中是一个空格)。

编写另一个代码以查看该问题是否适用于所有 IIS StreamWriter 实例。

我试过这个:

var ms = new MemoryStream();
var sw = new StreamWriter(ms, Encoding.GetEncoding("ISO-8859-1"));

sw.WriteLine("Test");
sw.WriteLine("Of");
sw.WriteLine("Lines");

sw.Flush();
ms.Position = 0;

在本例中,代码对于 Visual Studio 和 IIS 都适用。

我已经在这里呆了三天了,我已经尝试了我大脑能想到的一切。有人知道我可以尝试什么吗?

UPDATE

变得更奇怪了!我尝试更换线路_streamWriter.WriteLine(line); with:

_streamWriter.Write(linhaTexto + Environment.NewLine);

更糟糕的是:

_streamWriter.Write(linhaTexto + "\r\n");

两者都不断产生额外的\r特点。

我尝试用这个替换:

_streamWriter.Write(linhaTexto + "#\r\n#");

And get:

http://www.jonataspiazzi.xpg.com.br/hex_sharp.bmp


根据 MSDN,WriteLine

将后面带有行终止符的数据写入文本字符串或流。

你的最后一行应该是

 _streamWriter.Write(line);

将其放在循环之外并更改循环,以便它不会管理最后一行。

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

StreamWriter 在行尾添加额外的 \r 的相关文章

  • 防止重入并确保某些操作获取锁的正确方法是什么?

    我正在设计一个基类 当继承该基类时 它将针对多线程环境中的上下文提供业务功能 每个实例可能都有长时间运行的初始化操作 所以我想让这些对象可重用 为此 我需要能够 为这些对象之一分配上下文以允许其完成工作 防止对象在已有上下文的情况下被分配新
  • 当操作系统显示语言为非英语时获取本地时区标识符

    奇怪的是 TimeZone CurrentTimeZone StandardName根据计算机显示语言返回本地化名称 我想要一个可以提供给的程序化标识符TimeZoneInfo在下面的代码中 TimeZoneInfo timeZoneInf
  • 为什么 SqlClient 在传递 SqlXml 时使用不必要的 XML 转换?

    我有一个关于从 C 代码将 xml 数据类型传递给查询的问题 首先 这是 SQL Server 上的一个表 CREATE TABLE dbo XmlTable id int IDENTITY 1 1 NOT NULL dat xml NOT
  • 家庭自动化图书馆[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是一名 C 开发人员 希望将家庭自动化作为一种 爱好 我做了一些研究 但想知道是否有人知道支持 In
  • 想要使用 C# 列出文件夹中的所有图像文件[重复]

    这个问题在这里已经有答案了 可能的重复 GetFiles 具有多个扩展名 https stackoverflow com questions 3527203 getfiles with multiple extentions 是否有像 Ge
  • 使用 Thread.Sleep 等待的替代方法

    首先我不是在问同样的问题C Thread Sleep 的替代方案 https stackoverflow com questions 5450353 c sharp alternative to thread sleep or C 中 Th
  • 使用 Doxygen 记录 C++ 中的宏函数

    如何使用 Doxygen 在 C 中记录宏函数 并在我的非 Evil 代码的文档中引用它 更具体地说 我在 Message H 中定义了一些名为 Message 的常规类 用户可以继承该类来定义自己的消息 在另一个文件 MessageHel
  • 创建一个重复 char n 次的编译时字符串

    我正在使用这样的函数将数据导出到 xml 文件中 注意 愚蠢的示例 void write xml file const std string path using namespace std string view literals Use
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • C# 的最佳替代“错误继续下一步”是什么?

    如果我为 C 代码放置空的 catch 块 它是否与 VB NET 的 On Error Resume Next 语句等效 try C code catch exception 我问这个问题的原因是因为我必须将 VB NET 代码转换为 C
  • 如何在C#中从XML读取键值

    我有下面的 xml 格式文件 名为 ResourceData xml
  • 将 C++ 连接到 C#

    我一直在用 C 编写一个程序 注意到 C 中有一个库 别人写的 我想链接到我的代码 但我不知道该怎么做 有人可以提出建议吗 怀疑这很重要 但我正在使用带有 MSVC2010 的 Windows 7 提前致谢 您可以尝试在 C CLI 模式下
  • C# 如何使用 WM_GETTEXT / GetWindowText API / 窗口标题

    我想获取应用程序的控件 句柄的内容 这是实验代码 Process processes Process GetProcessesByName Notepad foreach Process p in processes StringBuild
  • c中的奇异值分解简单代码

    我正在寻找 C 语言的奇异值分解 SVD 代码 你能帮我吗 我找到了很多来源 但我无法运行它们 我正在寻找一个为我提供 S V 和 U 3 个矩阵的 SVD 代码版本 您可以使用数字食谱代码svdcmp c 参考 http tumic wz
  • 使用 async/await 抛出和捕获异常的正确方法

    全部请拿下面的二维码 Task
  • 进度条没有进展

    我有一个正在更新 sqlserver 中的表的程序 我有一个表单 我想显示其进度 进度条正在递增 但没有显示 我需要为此使用后台工作者吗 我正在做什么的例子 public void updateTable string tableName
  • reinterpret_cast 为 void* 是否合法

    我在看https en cppreference com w cpp language reinterpret cast https en cppreference com w cpp language reinterpret cast我注
  • std::unique_ptr 是否需要知道 T 的完整定义?

    我的标题中有一些代码 如下所示 include
  • 何时使用模拟框架?

    因此 我正在使用模拟框架 Moq 进行单元测试 并且想知道何时应该使用模拟框架 以下两个测试之间的优点 缺点是什么 public class Tests Fact public void TestWithMock Arrange var r
  • jQuery Datatable:分页和过滤器显示不正确

    我不知道如何解决这个问题 尝试了一整天但没有成功修复分页 我正在使用 jQuery 数据表 并且为了显示我的大量数据 我正在使用服务器端 作为测试 仅调用表中的 10 行数据 然后在传递到表之前 我重组了里面的数据dataSrc 使用这个解

随机推荐