写入以制表符分隔的文件
本文关键字:文件 分隔 制表符 | 更新日期: 2023-09-27 18:01:03
我在编写以Tab分隔的文件时遇到问题,我已经在这里检查过了,但还没有得到答案。
因此,我得到了一个函数,它返回包含以下重要部分的字符串(使用的分隔符以及我如何构建每一行(:
var delimiter = @"'t";
sb.Append(string.Join(delimiter, itemContent));
sb.Append(Environment.NewLine);
返回的字符串如下:
H't13't170000000000001't20150630
D't1050't10.0000'tY
D't1050't5.0000'tN
然后我把它写到一个文件中(下面的内容是上面的字符串(:
var content = BuildFile(item);
var filePath = tempDirectory + fileName;
// Create the File
using (FileStream fs = File.Create(filePath))
{
Byte[] info = new UTF8Encoding(true).GetBytes(content);
fs.Write(info, 0, info.Length);
}
然而,文件输出是这样的,没有选项卡(在记事本++中打开(:
H't13't170000000000005't20150630
D't1050't20.0000'tN
D't1050't2.5000'tY
什么时候应该更像这样(提供的样本文件(:
H 100115980 300010000000003 20150625
D 430181 1 N
D 342130 2 N
D 459961 1 N
这可能是由我使用的编码引起的吗?感谢您的任何意见,谢谢!
使用var delimiter = @"'t";
,变量包含文字'
和t
。@语法将反斜杠禁用为"special"。在这种情况下,你真的想要
var delimiter = "'t";
以具有制表符。
您的代码中有一个拼写错误。@
前缀表示以下字符串是一个文字,因此@"''t"是一个包含字符'
和t
的两个字符的字符串
您应该使用不带前缀的"''t"。
您应该考虑使用StreamWriter,而不是在内存中构建整个字符串并写入原始字节。StreamWriter默认使用UTF-8,并允许您像使用Console.WriteLine:一样编写格式化的行
var delimiter ="'t";
using(var writer=new StreamWriter(filePath))
{
var line=string.Join(delimiter, itemContent);
writer.WriteLine(line);
}