再提供一种方法在数据量不是很大的情况下用:
static void Main(string[] args)
{
string filepath = "D:\\test.txt";
StringBuilder txtValue = new StringBuilder("\n");
using (StreamReader reader = new StreamReader(filepath))
{
string line = "";
while ((line=reader.ReadLine()) != null)
{
if (line.Trim() != "")
{
txtValue.Append("\n"+line);
}
}
txtValue = txtValue.Replace("\n\n", "");
Console.WriteLine(txtValue.ToString());
}
using (FileStream fout = new FileStream(filepath, FileMode.Create, FileAccess.Write))
{
using (StreamWriter brout = new StreamWriter(fout, Encoding.Default))
{
brout.Write(txtValue.ToString().Replace("\n", Environment.NewLine));
brout.Close();
}
}
Console.Read();
}
System.IO.File.WriteAllLines("H:\\src.txt", from line in System.IO.File.ReadAllLines("H:\\src.txt")
where!string.IsNullOrEmpty(line.Trim())
select line);
Regex.Replace(str,"\r\n+","\r\n")
在向txt文件中输入数据时,用writeline方法,如果是空行就不写入,就行了啊
@artwl 和 @chenping2008 本质上是相同的,但是@artwl的太耗内存,只适合转换小Txt文本。
推测@chenping2008的思路是边read,边write。
1, ReadLine读入一行时,如果read失败则退出。
2, 如果为空行,返回步骤1;
3, 如果不为空,则把这行输出WriterLine,返回步骤1;
注意:退出前Close关闭当前的对象和基础流。