示例#1
0
        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);
        }
示例#2
0
 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;
 }
示例#3
0
        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;
            });
        }
示例#4
0
 private void GetEncoding()
 {
     if (_encoding == null)
     {
         var oldPosition = Position;
         _encoding = TxtEncoder.GetEncoding(_reader);
         Seek(oldPosition);
     }
 }
示例#5
0
        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("替换完成!");
            });
        }
示例#6
0
 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();
 }
示例#7
0
        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();
        }