Пример #1
0
        public static List <DAL.File> Search(string directory, string searchString)
        {
            bool            searchSubdirectories = true;
            bool            caseSensitive        = true;
            bool            useRegex             = true;
            string          docxText             = null;
            List <DAL.File> searchfiles          = new List <DAL.File>();
            var             isMatch = useRegex ? new Predicate <string>(x => Regex.IsMatch(x, searchString))
                : new Predicate <string>(x => x.IndexOf(searchString, caseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase) >= 0);

            // TODO rekorsive to all the directories in this directory
            foreach (var filePath in Directory.GetFiles(directory, "*.docx", searchSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly))
            {
                FileStream stream = null;
                using (stream = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    if (stream.Length == 0)
                    {
                        continue;
                    }
                    docxText = new DocxToStringConverter(stream).Convert();
                }
                if (isMatch(docxText))
                {
                    using (DBcomfilerEntities context = new DBcomfilerEntities())
                    {
                        string   idFile = stream.Name.Substring(stream.Name.Length - 41).ToString();
                        string   id     = idFile.Remove(idFile.Length - 5);
                        DAL.File file   = context.Files.FirstOrDefault(x => x.ID == id);
                        searchfiles.Add(file);
                    }
                }
            }
            return(searchfiles);
        }
        public static List <CollecumentData.File> SearchTextInFile(string keyword)
        {
            //FileStream inFile = new FileStream(@"E:\Documents\Hello.docx", FileMode.Open, FileAccess.Read);

            string directory                        = @"E:\Documents\GitHub\ColleCument\files";
            string searchString                     = keyword;
            bool   searchSubdirectories             = true;
            bool   caseSensitive                    = true;
            bool   useRegex                         = false;
            List <CollecumentData.File> searchfiles = new List <CollecumentData.File>();
            string docxText                         = null;
            var    isMatch = useRegex ? new Predicate <string>(x => Regex.IsMatch(x, searchString, caseSensitive ? RegexOptions.None : RegexOptions.IgnoreCase))
                    : new Predicate <string>(x => x.IndexOf(searchString, caseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase) >= 0);

            foreach (var filePath in Directory.GetFiles(directory, "*.docx", searchSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly))
            {
                using (var stream = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    if (stream.Length == 0)
                    {
                        continue;
                    }
                    docxText = new DocxToStringConverter(stream).Convert();

                    {
                        if (isMatch(docxText))
                        {
                            using (DBCollecumentEntities context = new DBCollecumentEntities())
                            {
                                string idFile             = stream.Name.Substring(stream.Name.Length - 41).ToString();
                                string id                 = idFile.Remove(idFile.Length - 5);
                                CollecumentData.File file = context.Files.FirstOrDefault(x => x.ID == id);
                                searchfiles.Add(file);
                            }
                        }
                    }
                }
            }
            return(searchfiles);
        }