13

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

4

4 回答 4

35

如果文件很小:

var lines = File.ReadAllLines(fileName).Where(arg => !string.IsNullOrWhiteSpace(arg));
File.WriteAllLines(fileName, lines);

如果文件很大:

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);
}
于 2011-06-25T19:38:53.223 回答
11
File.WriteAllLines(path, File.ReadAllLines(path).Where(l => !string.IsNullOrWhiteSpace(l)));
于 2011-06-25T19:39:17.210 回答
3

将文件的所有内容读入字符串然后运行

string output = null;
try {
    output = Regex.Replace(input, @"^\s*$", "", RegexOptions.Multiline);
} catch (Exception e) {

}

其他类似选项可以在如何从格式化字符串中删除空行中找到?

于 2011-06-25T19:46:41.210 回答
1

我们可以通过对大文件或小文件使用LINQ技术很容易地实现它。1.说明:它将读取文件并跳过所有空行并将所有数据存储到字符串数组中

                    string[] text = File.ReadAllLines(path with file name).Where(s => s.Trim() != string.Empty).ToArray();
  1. 它将删除该文件。

                    File.Delete(path with file name);
    
  2. 它将创建同名的新文件并将所有数组数据附加到新文件中

                    File.WriteAllLines(path with file name, text);
    

完整代码

                string[] text = File.ReadAllLines(LoraWan_Parameter_Check_Tool.Properties.Settings.Default.csv_file_path.ToString()).Where(s => s.Trim() != string.Empty).ToArray();
                File.Delete(LoraWan_Parameter_Check_Tool.Properties.Settings.Default.csv_file_path.ToString());
                File.WriteAllLines(LoraWan_Parameter_Check_Tool.Properties.Settings.Default.csv_file_path.ToString(), text);
  1. 问题解决了

谢谢

于 2019-12-11T13:09:09.627 回答