我试图将以下数据写入文本文件:
TEXTed 00:01:27 8.0 xxxxxxx Some test
TEXTed 00:01:35 251.0 xxxxxxx Some text
我正在使用streamwriter,首先构建我的字符串,然后写入文件:
var v15timeString = item.Duration;
var v15fileString = " " + item.Time + " ";
v15SR.Write(v15fileString);
var durLength = item.Duration.Length;
v15SR.BaseStream.Position = -durLength;
v15SR.WriteLine(item.Duration);
我遇到的问题是8.0,251.0如何注销这些问题。我希望在所有行中保持.0。通俗地说,这个专栏应该是正确对齐的。我在上面的代码中将其称为item.duration。
我通过执行streamreader.BaseStream.Position = -durLength
进行了上述尝试,但.Position没有采用负数。如何根据durLength在v15filestring
之后找回,然后写出item.Duration
请记住,我需要严格保持此列在文本文件中左对齐,如上面的示例所示。
请帮助。谢谢。
答案 0 :(得分:0)
您可以使用PadLeft代替随机空格
例如
var v15fileString = item.Time.ToString().PadLeft(21);
//and
v15SR.WriteLine(item.Duration.ToString().PadLeft(8));
注意:正如Ian所说,最好首先构建字符串,然后写行
答案 1 :(得分:0)
String.Format允许您指定字段宽度以及其他许多选项。近似代码为:
writer.Write(String.Format("{0,10} "{1, 15}", field1, field2));
摘自MSDN文章:
格式项的一般语法是:
{index[,alignment][: formatString]}
其中alignment是一个定义字段宽度的有符号整数。如果此值为负,则字段中的文本左对齐。如果是正数,则文本右对齐。
注意:如果writer没有刷新内容,尝试更新TextWriter
内部流的位置可能无法正常工作。为utf8字符串(这是.Net测试编写者的默认编码)计算正确的字节偏移量是很大的痛苦。