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

C#如何删除我的文本文件的第一行?,c#,text-files,streamreader,writer,C#,Text Files,Streamreader,Writer,我想在VisualStudio中创建一个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 E

我想在VisualStudio中创建一个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]);

   }}
不幸的是,bags[1]和bags[2]中的输出在第一行中有一个空行,是否仍要更新代码?

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

string[] bags = s.Split(new string[] {"EOS\n"}, StringSplitOptions.None);
您的输入文件是

...DDDD\nEOS\nEEEE\n...
使用代码拆分后,您将获得:

...DDDD\n  EOS  \nEEEE\n...
注意
EEEE
之前的前导
\n
。通过在分隔符中包含
\n
,您将获得:

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

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

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

“AAA\nBBB\nCCC\nDDD\n”“\nEEE\nFFF\n.”“\nJJJ…”

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


…这应该很好:)

除非换行符是
\r
\r\n
我想可能是这样。我会让OP来决定他特定的输入文本文件。它有问题,它说索引超出了数组的范围(啊,是的,非常感谢Greg调试后我终于明白了:Dhi slaks我应该把它放在哪里?在你想要修剪的字符串上。嗯,是的,我试过了,但是它在EOS处剪切了最后一行,所以输出变成IIEOS,没有换行:(
...DDDD\n  EOS\n  EEEE\n...
string[] bags = s.Split(new string[] {"EOS\n"}, StringSplitOptions.None);