将固定长度的字符串写入文件....?

时间:2014-02-28 13:47:21

标签: c# string filestream

我的客户需求具有标题,正文和页脚格式的固定长度文件记录,但在页脚中他们希望有一个1966长的空白空间。我尝试使用不同的butttons作为页眉和页脚和身体,但无法在最后指定空间。这是我的代码..在创建页脚时空间不起作用。

    FileStream fs = new FileStream(@"C:\Users\IT-Administrator\Desktop\ee.txt", FileMode.Open, FileAccess.ReadWrite);
    fs.Seek(0, SeekOrigin.End);


    StreamWriter sw = new StreamWriter(fs);
    sw.WriteLine(comboBox6.Text + textBox2.Text + textBox3.Text + textBox4.Text + **SPACE(1966)** );


    sw.Close();
    fs.Close();**strong text**

3 个答案:

答案 0 :(得分:6)

使用String.PadRight()填充字符串。

比如说 max 字符串长度是2000个字符,你可以这样做:

string example = "Example";
string full_example = example.PadRight(2000);

这将采用原始字符串的长度,并用空格填充它,直到达到所需的宽度。

在你的情况下,如果你想要1966个空格,你可以这样做:

string spaces = String.Empty.PadRight(1966);

答案 1 :(得分:1)

如果您想创建一个由1966个空格组成的字符串,您可以使用带有字符的string constructor来重复它:new String(' ', 1966)

如果您想将字符串填充到特定长度,可以根据需要使用PadRightPadLeft

答案 2 :(得分:1)

您可以使用接受格式说明符的WriteLine重载来完成此操作。

如果您希望最后一个元素总共占用1966个字符,您可以写:

using(var sw=new StreamWriter(@"C:\Users\IT-Administrator\Desktop\ee.txt"))
{
    sw.WriteLine("{0}{1}{2}{3,-1966}",comboBox6.Text ,textBox2.Text,
                                     textBox3.Text,textBox4.Text );
}

通过这种方式,可以更轻松地查看实际字符串的外观。例如,您可以看到实际上是在一个连续字符串中连接所有元素。也许,你想要做的是用空格分隔它们,例如:"{0} {1} {3} {4,-1966}"

如果您希望最后一个元素后跟1966个空格:

using(var sw=new StreamWriter(@"C:\Users\IT-Administrator\Desktop\ee.txt"))
{
    sw.WriteLine("{0}{1}{3}{4}{5,-1966}",comboBox6.Text ,textBox2.Text,
                                     textBox3.Text,textBox4.Text,' ');
}

在上面的代码中,using确保即使发生异常,StreamWriter也会关闭。该代码还通过使用路径参数创建StreamWriter来避免创建StreamWriter和FileStream