C#如何删除我的文本文件的第一行?

时间:2011-12-18 18:57:11

标签: c# text-files streamreader writer

我想在Visual Studio中创建一个Windows窗体应用程序,用于在按钮单击时写入文本文件。

我有一个包含

的txt文件(例如test.txt)
AAAA
BBBB
CCCC
DDDD
EOS
FFFF
GGGG
HHHH
IIII
EOS
JJJJ
KKKK
LLLL
MMMM
NNNN
EOS
EOF

然后我想把它分成许多其他的txt文件

**bag1.txt**
AAAA
BBBB
CCCC
DDDD
EOS

**bag2.txt**
EEEE
FFFF
GGGG
IIII
EOS

**bag3.txt**
JJJJ
KKKK
LLLL
MMMM
NNNN
EOS
EOF

这些是代码,

private void read3btn_Click(object sender, EventArgs e)
    {
        string fileName = textBox1.Text;
        TextReader sr = new StreamReader(fileName);
          //This allows you to do one Read operation.

        string s = sr.ReadToEnd();;
        sr.Close();

        string[] bags = s.Split(new string[] {"EOS"}, StringSplitOptions.None);

        // This will give you an array of strings (minus the EOS field)
        // Then write the files...

        System.IO.File.WriteAllText(@"D:\Program-program\tesfile\bag1.txt", bags[0] + "EOS");  //< -- Add this you need the EOS at the end field the field

        System.IO.File.WriteAllText(@"D:\Program-program\tesfile\bag2.txt", bags[1] + "EOS");

        System.IO.File.WriteAllText(@"D:\Program-program\tesfile\bag3.txt", bags[2] + "EOS" + bags[3]);

   }}

然后输出就这样了

**bag1.txt**
    AAAA
    BBBB
    CCCC
    DDDD
    EOS

**bag2.txt**

EEEE
FFFF
GGGG
IIII
EOS

**bag3.txt**

JJJJ
KKKK
LLLL
MMMM
NNNN
EOS
EOF

遗憾的是,行李[1]和行李[2]的输出在第一行有一个空白行,是否还有更新代码?

3 个答案:

答案 0 :(得分:1)

您的"EOS"分隔符不包含换行符。尝试:

string[] bags = s.Split(new string[] {"EOS\n"}, StringSplitOptions.None);

您的输入文件是

...DDDD\nEOS\nEEEE\n...

在拆分代码后,您会得到:

...DDDD\n  EOS  \nEEEE\n...

请注意\n之前的前导EEEE。通过在分隔符中加入\n,您将获得:

...DDDD\n  EOS\n  EEEE\n...

答案 1 :(得分:1)

调用.Trim()删除前导空格。

答案 2 :(得分:0)

好的,这不是一个大问题:) 当您读取文件时,会得到一个字符串,如“AAA \ nBBB \ nCCC \ nDDD \ nEOS \ nEEE \ nFFF \ n ... EOS \ nJJJ \ n ......” 如果仅在“EOS”上修剪字符串,则得到:

“AAA \ nBBB \ nCCC \ nDDD \ n”“\ nEEE \ nFFF \ n ...”“\ n JJJ ......”

因为Split()方法删除了“EOS”字符串,而不是它后面的新行:)

string[] bags = s.Split(new string[] {"EOS\n"}, StringSplitOptions.None);

..这应该可以正常工作:)