对于我正在做的一个项目,我必须做的一件事是删除纯文本文件的前 X 行。我说 X 是因为我需要多次执行此例程,每次删除的行都会不同,但它们总是从头开始,删除第一个 X,然后将结果输出到同一个文件。

我正在考虑做这样的事情,这是我从我阅读的其他教程和示例中拼凑出来的:

String line = null;

String tempFile = Path.GetTempFileName();
String filePath = openFileDialog.FileName;

int line_number = 0;
int lines_to_delete = 25;

using (StreamReader reader = new StreamReader(originalFile)) {
    using (StreamWriter writer = new StreamWriter(tempFile)) {
        while ((line = reader.ReadLine()) != null) {
            line_number++;

            if (line_number <= lines_to_delete)
                continue;

            writer.WriteLine(line);
        }
    }
}

if (File.Exists(tempFile)) {
    File.Delete(originalFile);
    File.Move(tempFile, originalFile);
}

但我不知道这是否会起作用,因为像从第 0 行开始的行号之类的小东西……另外,我不知道它在效率和形式方面是否是好的代码。

谢谢一堆。

最佳答案

没关系,而且看起来它不会有您担心的逐一问题。然而,一个更精简的方法可以通过两个单独的循环提供——一个只计算输入文件中的前 X 行(不做其他任何事情),一个单独的循环只将其他行从输入复制到输出。即,不是您的单个 while 循环,而是...:

    while ((line = reader.ReadLine()) != null) {
        line_number++;

        if (line_number > lines_to_delete)
            break;
    }

    while ((line = reader.ReadLine()) != null) {
        writer.WriteLine(line);
    }

10-05 20:49
查看更多