如何将特定行从一个文件复制到另一个文件?
How to copy specific lines from one file to another?
我有一个大约 3000 行的文本文件。有些行以数字开头,有些以文本开头。例如:
以数字开头的行:
001 一些文字
0017 一些文字
8 一些文本...
以文本开头的行:
一些文字,
一些文字...
我想将以数字开头的行复制到 result.text。
以 log.txt.
文本开头的行
非常感谢。
好的,这就是我的做法
- 使用File将文本文件读入字符串[]
- 创建 2 个字符串 Lists 以保存 "results" 和 "logs"
- 对于字符串数组中的每个字符串,获取带有 charAt
的第一个字符
- 使用 Char.IsNumber 了解您应该将正在处理的行添加到哪个列表中
- 再次使用文件将列表写入不同的文件
如果这是你的家庭作业,这就足够了。做你的研究!
一个文件一条语句即可完成
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);
}
}
}
}
第二种方法也不缓冲文件。
我有一个大约 3000 行的文本文件。有些行以数字开头,有些以文本开头。例如:
以数字开头的行:
001 一些文字
0017 一些文字
8 一些文本...
以文本开头的行:
一些文字,
一些文字...
我想将以数字开头的行复制到 result.text。
以 log.txt.
文本开头的行非常感谢。
好的,这就是我的做法
- 使用File将文本文件读入字符串[]
- 创建 2 个字符串 Lists 以保存 "results" 和 "logs"
- 对于字符串数组中的每个字符串,获取带有 charAt 的第一个字符
- 使用 Char.IsNumber 了解您应该将正在处理的行添加到哪个列表中
- 再次使用文件将列表写入不同的文件
如果这是你的家庭作业,这就足够了。做你的研究!
一个文件一条语句即可完成
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);
}
}
}
}
第二种方法也不缓冲文件。