public static List <ChapterItem> GetChapters(string file) { var pattern = @"^[\s]{0,6}第?[\s]*[0-9一二三四五六七八九十百千]{1,10}[章回|节|卷|集|幕|计]?[\s\S]{0,20}$"; var fs = new FileStream(file, FileMode.Open); var txtEncoding = new TxtEncoder().GetEncoding(fs); //获取编码 var bookChapters = new List <ChapterItem>(); var reader = new StreamReader(fs, txtEncoding); var line = reader.ReadLine(); var content = new StringBuilder(); var name = DateTime.Now.ToFileTime().ToString(); bookChapters.Add(new ChapterItem(line, name)); while ((line = reader.ReadLine()) != null) { if (Regex.IsMatch(line, pattern)) { WriteTemp(content.ToString(), name); content.Clear(); name = DateTime.Now.ToFileTime().ToString(); bookChapters.Add(new ChapterItem(line, name)); } else { content.AppendLine(line); } } WriteTemp(content.ToString(), name); reader.Close(); fs.Close(); return(bookChapters); }
public static List<ChapterItem> GetChapters(string file) { var pattern = @"^[\s]{0,6}第?[\s]*[0-9一二三四五六七八九十百千]{1,10}[章回|节|卷|集|幕|计]?[\s\S]{0,20}$"; var fs = new FileStream(file, FileMode.Open); var txtEncoding = new TxtEncoder().GetEncoding(fs); //获取编码 var bookChapters = new List<ChapterItem>(); var reader = new StreamReader(fs, txtEncoding); var line = reader.ReadLine(); var content = new StringBuilder(); var name = DateTime.Now.ToFileTime().ToString(); bookChapters.Add(new ChapterItem(line, name)); while ((line = reader.ReadLine()) != null) { if (Regex.IsMatch(line, pattern)) { WriteTemp(content.ToString(), name); content.Clear(); name = DateTime.Now.ToFileTime().ToString(); bookChapters.Add(new ChapterItem(line, name)); } else { content.AppendLine(line); } } WriteTemp(content.ToString(), name); reader.Close(); fs.Close(); return bookChapters; }
private void _runOne(FileItem item) { Application.Current.Dispatcher.Invoke(() => { item.Status = DealStatus.Wating; }); var status = DealStatus.Success; var count = 0; try { var fs = new FileStream(item.FullName, FileMode.Open); var encoder = new TxtEncoder(); var reader = new StreamReader(fs, encoder.GetEncoding(fs)); var content = reader.ReadToEnd(); reader.Close(); foreach (var replace in ReplaceList) { var regex = new Regex(replace.Search); var tmpcount = regex.Matches(content).Count; if (tmpcount <= 0) { continue; } count += tmpcount; var replaceString = replace.Replace.Replace("\\n", "\n") .Replace("\\r", "\r") .Replace("\\t", "\t") .Replace("\\xa1", "\xa1") .Replace("\\xa2", "\xa2") .Replace("\\xa3", "\xa3") .Replace("\\xa9", "\xa9"); content = regex.Replace(content, replaceString); } if (count <= 0) { goto end; } if (IsBak) { File.Copy(item.FullName, item.FullName + ".bak", true); } Open.Writer(item.FullName, content); } catch (Exception ex) { status = DealStatus.Failure; _showMessage("可能原因:正则表达式错误!" + ex.Message); } end: Application.Current.Dispatcher.Invoke(() => { item.Status = status; item.Count = count; }); }
private void GetEncoding() { if (_encoding == null) { var oldPosition = Position; _encoding = TxtEncoder.GetEncoding(_reader); Seek(oldPosition); } }
private void _parallel() { var result = Parallel.ForEach(FileList, item => { item.Status = DealStatus.Wating; try { var fs = new FileStream(item.FullName, FileMode.Open); var encoder = new TxtEncoder(); var reader = new StreamReader(fs, encoder.GetEncoding(fs)); var content = reader.ReadToEnd(); reader.Close(); foreach (var replace in ReplaceList) { var regex = new Regex(replace.Search); var count = regex.Matches(content).Count; if (count <= 0) { continue; } item.Count += count; content = regex.Replace(content, replace.Replace); } if (item.Count <= 0) { return; } if (IsBak) { File.Copy(item.FullName, item.FullName + ".bak", true); } var utf8 = new UTF8Encoding(false); var writer = new StreamWriter(item.FullName, false, utf8); writer.Write(content); writer.Close(); item.Status = DealStatus.Success; } catch (Exception ex) { item.Status = DealStatus.Failure; _showMessage("可能原因:正则表达式错误!" + ex.Message); } }); Task.Factory.StartNew(() => { while (!result.IsCompleted) { Thread.Sleep(500); } _showMessage("替换完成!"); }); }
public void Get(string file) { if (!File.Exists(file)) { return; } var fs = new FileStream(file, FileMode.Open); var encoder = new TxtEncoder(); var sr = new StreamReader(fs, encoder.GetEncoding(fs)); string line; while (null != (line = sr.ReadLine())) { _addTitle(line); } sr.Close(); }
private void _import(string file) { if (string.IsNullOrEmpty(file) || !File.Exists(file)) { return; } var encoder = new TxtEncoder(); StreamReader sr = new StreamReader(file, encoder.GetEncoding(file)); string line; while ((line = sr.ReadLine()) != null) { if (!Regex.IsMatch(line, Pattern)) { continue; } var match = Regex.Match(line, Pattern); EmailList.Add(new EmailItem(match.Groups[1].Value, match.Groups[2].Value)); } sr.Close(); }