如何在C#中合并两个头文件?

时间:2012-06-07 20:22:32

标签: c#

我有两个文件如下: 第一个文件.txt -

 4
 suzan w kieth
 Terry s Greenberg
 Ron   q xxx
 Tu    L ip

第二个文件file2.txt -

2
Lily s great
Rowina q Joseph

两个文件的第一个记录是该文件中的记录数,两个文件的格式完全相同。

我想要第三个文件,其中包含以下记录 -

6
suzan w kieth
Terry s Greenberg
Ron   q xxx
Tu    L ip
Lily s great
Rowina q Joseph

有什么建议我如何合并这些文件? 还是最快的方式?

感谢。

2 个答案:

答案 0 :(得分:1)

Convert string to int

TextReader.ReadLine

TextReader.WriteLine

using System;
using System.IO;

namespace csharp_station.howto
{
    class TextFileReader
    {
        static void Main(string[] args)
        {
            TextReader tr1 = new StreamReader("file1.txt");
            TextReader tr2 = new StreamReader("file2.txt");
            TextWriter tw = new StreamWriter("result.txt");

            int count1 = Convert.ToInt32(tr1.ReadLine());
            int count2 = Convert.ToInt32(tr2.ReadLine());
            tw.WriteLine(count1 + count2);

            for(int i = 0; i < count1; i++)
            {
                tw.WriteLine(tr1.ReadLine());
            }

            for(int i = 0; i < count2; i++)
            {
                tw.WriteLine(tr2.ReadLine());
            }

            tr1.Close();
            tr2.Close();
            tw.Close();
        }
    }
}

答案 1 :(得分:0)

最简单的方法是使用Enumerable.Concat

var file1Lines = System.IO.File.ReadAllLines(file1Path);
var file2Lines = System.IO.File.ReadAllLines(file2Path);
int totalCount = int.Parse(file1Lines.First()) + int.Parse(file2Lines.First());
var file3FirstLine = new[] { totalCount.ToString() };
var file3Lines = file3FirstLine.Concat(file1Lines.Skip(1))
                               .Concat(file2Lines.Skip(1));
System.IO.File.WriteAllLines(file3Path, file3Lines);