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<string> fileContent = new List<string>();
|
|
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++;
|
}
|
}
|
}
|
}
|
}
|