如何从C#中的文本文件中删除空行?
答案 0 :(得分:25)
如果文件很小:
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);
}
答案 1 :(得分:9)
File.WriteAllLines(path, File.ReadAllLines(path).Where(l => !string.IsNullOrWhiteSpace(l)));
答案 2 :(得分:3)
将文件的所有内容读入字符串然后运行
string output = null;
try {
output = Regex.Replace(input, @"^\s*$", "", RegexOptions.Multiline);
} catch (Exception e) {
}
中找到
答案 3 :(得分:1)
对于大型文件或小型文件,使用 LINQ 技术可以非常轻松地实现。 1.说明:它将读取文件并跳过所有空行并将所有数据存储到字符串数组中
string[] text = File.ReadAllLines(path with file name).Where(s => s.Trim() != string.Empty).ToArray();
它将删除该文件。
File.Delete(path with file name);
它将创建具有相同名称的新文件并将所有数组数据附加到新文件中
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);
谢谢