using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HotelPms.SourceFactory.FileEdit { public class Core : IDisposable { private EditData curEditData = null; private List fileContent = new List(); public Core() { } public void Dispose() { curEditData = null; fileContent.Clear(); fileContent = null; } public void Execute(EditData data) { curEditData = data; if(curEditData.Data.Count == 0) { return; } //ファイルをメモリー中の読む string line; fileContent.Clear(); using (StreamReader sr = new StreamReader(curEditData.FilePath, curEditData.Encoding)) { while ((line = sr.ReadLine()) != null) { fileContent.Add(line); //検索 foreach(Item item in curEditData.Data) { if (item.HitIndex2 == -1 && line.Trim().StartsWith(item.Key1)) { item.HitIndex1 = fileContent.Count - 1; } if (item.HitIndex1 != -1 && item.Key2.Length > 0 && line.Trim().StartsWith(item.Key2)) { item.HitIndex2 = fileContent.Count - 1; } } } } using (StreamWriter sw = new StreamWriter(curEditData.FilePath, false, curEditData.Encoding)) { int i = 0; foreach (string content in fileContent) { sw.WriteLine(content); foreach (Item item in curEditData.Data) { if (item.HitIndex1 == -1) { continue; } int index = item.HitIndex2 == -1 ? item.HitIndex1 : item.HitIndex2; if (index != i) { continue; } foreach(string addLine in item.Data) { sw.WriteLine(addLine); } } i++; } } } } }