删除文本文件中的空白行

Mik*_*ike 5 .net c# string string-parsing

如何从C#中的文本文件中删除空行?

Ale*_*Aza 26

如果文件很小:

var lines = File.ReadAllLines(fileName).Where(arg => !string.IsNullOrWhiteSpace(arg));
File.WriteAllLines(fileName, lines);
Run Code Online (Sandbox Code Playgroud)

如果文件很大:

var tempFileName = Path.GetTempFileName();
try
{
    using (var streamReader = new StreamReader(inptuFileName))
    using (var streamWriter = new StreamWriter(tempFileName))
    {
        string line;
        while ((line = streamReader.ReadLine()) != null)
        {
            if (!string.IsNullOrWhiteSpace(line))
                streamWriter.WriteLine(line);
        }
    }
    File.Copy(tempFileName, inptuFileName, true);
}
finally
{
    File.Delete(tempFileName);
}
Run Code Online (Sandbox Code Playgroud)

  • 对于大文件来说不是一个好的解决方案,因为整个文件可能是1行,然后你仍然用ReadLine()在内存中读取它... (2认同)

Mår*_*röm 10

File.WriteAllLines(path, File.ReadAllLines(path).Where(l => !string.IsNullOrWhiteSpace(l)));
Run Code Online (Sandbox Code Playgroud)