【发布时间】:2013-04-12 14:08:33
【问题描述】:
我负责开发一个在生产服务器上运行的应用程序,它旨在搜索和替换每个 ini、xml 和配置文件扩展名中的一些特定字符串,我必须关心性能(总共 150 台服务器)。在替换之前,我必须备份文件。实现这一目标的最佳方法是什么?顺便说一句,我可以使用 Dot Net 4.0,但最好使用 3.5,因为不是每个服务器都有 4.0,但如果有很大的优势,我可以更新到 4.0。现在我在想这样的事情:
String[] arrayFiles = Directory.GetFiles(strFylesystem , strExtensao, SearchOption.AllDirectories);
foreach (string s in arrayFiles ){
File.Copy(pathOrigin + s, pathNew);
searchFound = false;
foreach (string line in File.ReadAllLines(pathNew + s){
if (line.contains("string_searched")){
line.Replace("string_searched", new_string);
searchFound = true;
}
if (!searchFound){
File.Delete(pathNew + s);
}
}
}
我发现一些论坛使用 Lambda、PLINQ 和正则表达式。除了个人喜好之外,这些对我的表现有帮助吗?例如:如果我使用StreamReader 开发而不是使用File.ReadAllLines,性能会更好吗?有没有办法从 Windows 中包装 findStr 并获得性能提升?
【问题讨论】:
-
真的,每个磁盘上的每个 INI 和 XML 文件?
-
这听起来像是一个 Powershell 脚本的工作。一个例子可以在here 找到。免责声明:我没有尝试过我链接的脚本。使用它需要您自担风险。
-
您是否需要经常运行此脚本?这几乎听起来像是你需要运行一次然后快乐的事情。如果是这样,为什么性能会成为问题?
-
Alexn,是的,每个 INI 和 XML 文件以及更多扩展名?
-
PHeiberg,感谢您的建议。我会读的。