从流中读取,修改字符串并写入文件

时间:2019-06-05 22:53:59

标签: c# .net filesystems

我有一个控制台应用程序,它报告自上次运行该应用程序以来已更新的文件的报告,并将文件的完整路径输出到文本文件。我需要在文本文件中修改这些文件名,以运行AECOsim的(草稿包)本机批处理工具。

我需要打开字符串文本文件

F:\IOP\EW\02_Plant\99_CAD\autodesk\navisworks\01_Models\ST\0-EW-2110-ST-003.dgn
F:\IOP\EW\02_Plant\99_CAD\autodesk\navisworks\01_Models\ST\0-EW-2120-ST-001.dgn
F:\IOP\EW\02_Plant\99_CAD\autodesk\navisworks\01_Models\ST\0-EW-2120-ST-002.dgn

要这样输出。前5行需要在那儿,所以我假设我将从第6行开始将修改后的字符串写到现有文件中。

[SETTINGS=bpOptions]
   logFile=_USTN_OUT:batchprocess.log
   cmdFileName=F:\IOP\EW\Standards\data\Batchprocess\751EW-ST-IFC.txt
   clearLog=1
   initialModel=-18
[SOURCE=F:\IOP\EW\01_Models\ST\0-EW-2110-ST-003.dgn]
[MODEL=Design Model]
[SOURCE=F:\IOP\EW\01_Models\ST\0-EW-2120-ST-001.dgn]
[MODEL=Design Model]
[SOURCE=F:\IOP\EW\01_Models\ST\0-EW-2120-ST-002.dgn]
[MODEL=Design Model]

对于使用哪种api的任何建议,我们将不胜感激

1 个答案:

答案 0 :(得分:0)

快速而肮脏的做法是遍历每行或每行的一个收集行,并进行字符串替换以替换或删除不需要的文本

类似

var sb = new System.Text.StringBuilder();
...

foreach( var file in fileLines ) {

    sb.AppendLine($"[SOURCE={file.Replace("","")}]");
    sb.AppendLine($"[MODEL=Design Model]");
}

return sb.ToString();

也就是说,如果您需要正则表达式替换,而您需要更动态的东西