我有一个功能可以修剪目录中所有文件中的所有文本。这是代码
var dbtables = System.IO.Directory.GetFiles(db);
foreach(var table in dbtables)
{
string text = File.ReadAllText(table);
File.WriteAllText(table, text.Trim());
}
此目录中有很多大文件,大约需要 30 分钟才能完成。你知道更快的方法吗?
我有一个功能可以修剪目录中所有文件中的所有文本。这是代码
var dbtables = System.IO.Directory.GetFiles(db);
foreach(var table in dbtables)
{
string text = File.ReadAllText(table);
File.WriteAllText(table, text.Trim());
}
此目录中有很多大文件,大约需要 30 分钟才能完成。你知道更快的方法吗?
以下是我建议对每个文件执行的操作:
读第一个字符。
如果是空格,则必须重写整个文件。
如果第一个字符不是空格,则不会修剪开头,因此您可以截断结尾。
您的代码当前从每个整个文件的开头和结尾修剪空白,而不是每一行。如果要逐行修剪空白,可以使用:
var dbtables = System.IO.Directory.GetFiles(db);
foreach (string table in dbtables)
{
string temp = table + ".tmp";
using (StreamWriter target = new StreamWriter(temp))
foreach (string line in File.ReadLines(table))
target.WriteLine(line.Trim());
File.Delete(table);
File.Move(temp, table);
}