从文本文件中删除特定行?

Goo*_*ber 25 c# text-files

我需要从文本文件中删除一条确切的行,但我不能为我的生活锻炼如何去做这件事.

任何建议或例子将不胜感激?

相关问题

从文本文件中删除行的有效方法(C#)

Sea*_*ght 40

如果您要删除的行基于该行的内容:

string line = null;
string line_to_delete = "the line i want to delete";

using (StreamReader reader = new StreamReader("C:\\input")) {
    using (StreamWriter writer = new StreamWriter("C:\\output")) {
        while ((line = reader.ReadLine()) != null) {
            if (String.Compare(line, line_to_delete) == 0)
                continue;

            writer.WriteLine(line);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

或者如果它基于行号:

string line = null;
int line_number = 0;
int line_to_delete = 12;

using (StreamReader reader = new StreamReader("C:\\input")) {
    using (StreamWriter writer = new StreamWriter("C:\\output")) {
        while ((line = reader.ReadLine()) != null) {
            line_number++;

            if (line_number == line_to_delete)
                continue;

            writer.WriteLine(line);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Ari*_*yck 13

执行此操作的最佳方法是以文本模式打开文件,使用ReadLine()读取每一行,然后使用WriteLine()将其写入新文件,跳过要删除的一行.

据我所知,没有通用的delete-a-line-from-file函数.

  • +1 比缓存所有行然后在不删除一行的情况下写回更好。 (2认同)

Dar*_*rov 7

如果文件不是很大,一种方法是将所有行加载到数组中:

string[] lines = File.ReadAllLines("filename.txt");
string[] newLines = RemoveUnnecessaryLine(lines);
File.WriteAllLines("filename.txt", newLines);
Run Code Online (Sandbox Code Playgroud)