ank*_*shg 4 c# file-io rewrite
对于我正在做的项目,我必须做的一件事是删除明文文件的前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);
}
Run Code Online (Sandbox Code Playgroud)
但是我不知道这是否会起作用,因为从第0行开始的行号或其他东西......还有,我不知道它在效率和形式方面是否是好的代码.
谢谢一堆.
我喜欢它...
File.WriteAllLines(
fileName,
File.ReadAllLines(fileName).Skip(numberLinesToSkip).ToArray());
Run Code Online (Sandbox Code Playgroud)
没关系,看起来不会有你担心的一个一个问题.然而,一个更精简的方法将由两个独立的循环提供 - 一个只计算输入文件中的前X行(并且不做任何其他操作),另一个只是将其他行从输入复制到输出.即,而不是你的单循环while,...:
while ((line = reader.ReadLine()) != null) {
line_number++;
if (line_number > lines_to_delete)
break;
}
while ((line = reader.ReadLine()) != null) {
writer.WriteLine(line);
}
Run Code Online (Sandbox Code Playgroud)