繁体   English   中英

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

[英]How to copy specific lines from one file to another?

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

以数字开头的行:

001一些文字

0017一些文字

8一些文字...

以文本开头的行:

一些文字,

一些文字...

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

以text开头的行到log.txt。

非常感谢。

一个文件可以用一个语句完成

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);
            }
        }
    }
}

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

好的,这就是我要怎么做

  • 使用文件将文本文件读取为字符串[]
  • 创建2个字符串列表以保存“结果”和“日志”
  • 对于字符串数组中的每个字符串,请使用charAt获得第一个字符
  • 使用Char.IsNumber知道您应该将正在处理的行Add()到哪个列表
  • 再次使用File将列表写入不同的文件

如果这是您的家庭作业,这就足够了。 做你的研究!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM