如何将特定行从一个文件复制到另一个文件?

时间:2016-05-22 17:44:21

标签: c# file streamreader streamwriter

我有一个大约3000行的文本文件。有些行以数字开头,有些则以文字开头。例如:

以数字开头的行:

001一些文字

0017一些文字

8一些文字......

以文字开头的行:

一些文字,

一些文字......

我想将以数字开头的行复制到result.text。

以text到log.txt开头的行。

非常感谢。

2 个答案:

答案 0 :(得分:1)

可以在一个语句中为一个文件

完成
WriteAllLines("new file", 
    ReadLines("source file")
    .Where(line => line.Lenth > 0 && Char.IsDigit(line[0]))
);

请注意,它在内部逐行工作,即内存中一次只能有一行。将从输入处理读取一行并将其写入输出,然后读取下一行,依此类推。这是因为这些方法适用于IEnumerable<string>。例如,如果您将文件读入数组,IEnumerable不会缓冲整个文件。

您必须为两个输出文件重复此操作两次。因此,我建议采用以下方法,只读取输入文件一次:

using (var log = CreateText("log.txt"))
using (var result = CreateText("result.txt")) {
    foreach (string line in ReadLines("source file")) {
        if (line.Length > 0) {
            if (Char.IsDigit(line[0])) {
                result.WriteLine(line);
            } else {
                log.WriteLine(line);
            }
        }
    }
}

第二种方法也不会缓冲文件。

答案 1 :(得分:0)

好的,我会怎么做

  • 使用File将您的文本文件读入字符串[]
  • 创建2个字符串Lists以保存&#34;结果&#34;和&#34;记录&#34;
  • 对于字符串数组中的每个字符串,使用charAt
  • 获取第一个字符
  • 使用Char.IsNumber了解您应该添加哪个列表()您正在处理的行
  • 再次使用File将列表写入不同的文件

这足以暗示这是你的功课。做你的研究!