c#排序文本文件

时间:2013-06-13 13:52:56

标签: c# openfiledialog

我有一个关于如何对文本文件进行排序的问题。 我有一个srec文件,我需要先对其进行排序,然后再通过COM1发送。 所以在打开或发送之前我需要对文件进行排序。

以下是我的srec文件的示例:

  

S2140338BE0E0606510004008D15FE915115FE9191CC   S2140338CE04008D15FE9006010242C78C0AB79C04AF   S2140338DE008D15FE91D6C78C0AB79C04088D1D0065   S2130338EE1A16270704088D1D001A0CC78C11190C
  S20C038E880000000000000D23AA
  S2100202C000033403000336C3000338DBDF   S2140347C0045C3F0510060504008D15FEFC1304006B   S2140347D08D15FEFD060104008D15FE80068304007C   S2140347E08D15FE821304008D15FE8806FF04008DCA   S2140347F015FE8906FF04008D15FE8E060104008D46

这是源代码:

StringList list = new StringList().FromFile(appfile.FileName);

        // Read file and put it in a list
        foreach (String line in list)
        {

            serialPort1.Write(line);
        }

        MessageBox.Show("Bootfile and Applicationfile are send succesfully.");

2 个答案:

答案 0 :(得分:2)

虽然你可以使它复杂化,但如果文件大小合适(例如它不是大量文件),那么它可以很容易地保存在内存中,它应该像这样简单:

var lines = File.ReadAllLines("{PathToFile}");
lines.Sort();
File.WriteAllLines("{PathToFile}", lines);

其中{PathToFile}是文件的完全限定物理路径。

此处ReadAllLines会返回string[],而WriteAllLines会回复string[]

此外,正如Jim Mischel所提出的,另一种选择是这样的:

File.WriteAllLines(filename, File.ReadLines(filename).OrderBy(s => s));

这种方法的主要好处是代码更优雅。

答案 1 :(得分:0)

使用此:

List<string> list;

读取每一行直到行尾,然后将其添加到列表中。 然后对列表进行排序。 最好的方式,在linq技术之后,afaik。