public static List <LogInfo> TXTDelEmptyLines(EngineState s, CodeCommand cmd) { List <LogInfo> logs = new List <LogInfo>(); Debug.Assert(cmd.Info.GetType() == typeof(CodeInfo_TXTDelEmptyLines)); CodeInfo_TXTDelEmptyLines info = cmd.Info as CodeInfo_TXTDelEmptyLines; string fileName = StringEscaper.Preprocess(s, info.FileName); if (StringEscaper.PathSecurityCheck(fileName, out string errorMsg) == false) { logs.Add(new LogInfo(LogState.Error, errorMsg)); return(logs); } if (File.Exists(fileName) == false) { logs.Add(new LogInfo(LogState.Error, $"File [{fileName}] not exists")); return(logs); } Encoding encoding = FileHelper.DetectTextEncoding(fileName); int i = 0; string tempPath = Path.GetTempFileName(); using (StreamReader reader = new StreamReader(fileName, encoding)) using (StreamWriter writer = new StreamWriter(tempPath, false, encoding)) { string lineFromSrc; while ((lineFromSrc = reader.ReadLine()) != null) { if (lineFromSrc.Equals(string.Empty, StringComparison.Ordinal)) { i++; } else { writer.WriteLine(lineFromSrc); } } } FileHelper.FileReplaceEx(tempPath, fileName); logs.Add(new LogInfo(LogState.Success, $"Deleted [{i}] empty lines")); return(logs); }
public static List <LogInfo> TXTDelEmptyLines(EngineState s, CodeCommand cmd) { List <LogInfo> logs = new List <LogInfo>(); CodeInfo_TXTDelEmptyLines info = cmd.Info.Cast <CodeInfo_TXTDelEmptyLines>(); string fileName = StringEscaper.Preprocess(s, info.FileName); if (!StringEscaper.PathSecurityCheck(fileName, out string errorMsg)) { return(LogInfo.LogErrorMessage(logs, errorMsg)); } if (!File.Exists(fileName)) { return(LogInfo.LogErrorMessage(logs, $"File [{fileName}] does not exist")); } Encoding encoding = EncodingHelper.DetectEncoding(fileName); int i = 0; string tempPath = FileHelper.GetTempFile(); using (StreamReader r = new StreamReader(fileName, encoding, false)) using (StreamWriter w = new StreamWriter(tempPath, false, encoding)) { string lineFromSrc; while ((lineFromSrc = r.ReadLine()) != null) { if (lineFromSrc.Length == 0) { i++; } else { w.WriteLine(lineFromSrc); } } } FileHelper.FileReplaceEx(tempPath, fileName); logs.Add(new LogInfo(LogState.Success, $"Deleted [{i}] empty lines")); return(logs); }