dan*_*470 9 c# newline textwriter
我正在尝试用我的C#程序用Unix风格的换行编写一个文本文件.
由于某种原因,以下代码不起作用:
TextWriter fileTW = ...
fileTW.NewLine = "\n";
fileTW.WriteLine("Hello World!");
Run Code Online (Sandbox Code Playgroud)
这也不是:
TextWriter fileTW = ...
fileTW.Write("Hello World! + \n");
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,'\n'都被'\ r \n'替换,我不想要!我一直用十六进制编辑器验证这一点,它显示每行以0x0D0A结尾.
有任何想法吗?
谢谢!
编辑:
对不起大家,误报!
请允许我解释一下......
我的TextWriter正在写一个MemoryStream,然后使用SharpZLib将其添加到tar存档中.事实证明,通过使用WinZIP提取文本文件,它正在用\ r \n替换\n的每个实例.如果我将相同的tar存档复制到我的Ubuntu机器并在那里提取,只有\n就在那里.奇怪的!
对不起,如果我浪费了任何人的时间!谢谢!
Jon*_*eet 17
我无法重现这一点.示例代码:
using System;
using System.IO;
class Test
{
static void Main()
{
using (TextWriter fileTW = new StreamWriter("test.txt"))
{
fileTW.NewLine = "\n";
fileTW.WriteLine("Hello");
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
c:\users\jon\Test>dir test.txt
Volume in drive C has no label.
Volume Serial Number is 4062-9385
Directory of c:\users\jon\Test
20/10/2011 21:24 6 test.txt
1 File(s) 6 bytes
Run Code Online (Sandbox Code Playgroud)
注意大小- 6个字节-这是5"你好"和一个为"\n".没有设置NewLine属性,它是7(两个用于"\ r \n").
你能想出一个类似的简短但完整的程序来证明这个问题吗?你如何确定你的文件后面包含"\ r \n"?