搜索指定目錄下的指定後綴名字的所有文件的內容

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tools;
using System.Threading;

namespace AutoSerachFile
{
    class AutoSerachFile
    {
        static void Main(string[] args)
        {
            if (args.Length < 3)
            {
                Console.WriteLine("參數錯誤!!!");
            }
            else
            {
                //string dir = @"D:\bb";
                //string suffix = "*.txt";
                //string keyword = "Dir";

                string dir = args[0];
                string suffix = args[1];
                string keyword = args[2];
                string[] filepath = FindALLFile.getAllFile(dir, suffix);
                for (int i = 0; i < filepath.Length; i++)
                {
                    string[] inputInfo = new string[2];
                    inputInfo[0] = filepath[i];
                    inputInfo[1] = keyword;
                    new Thread(new ParameterizedThreadStart(serach)).Start(inputInfo);
                }
            }
            Console.Read();
        }
        public static void serach(Object inputInfo)
        {
            string[] serachInfo = (String[])inputInfo;
            List<SearchInfo> getall = SearchFile.search(serachInfo[0], serachInfo[1]);
            for (int i = 0; i < getall.Count; i++)
            {
                Console.WriteLine("文件名:" + getall[i].filepath +
                    "\r\n行:" + getall[i].line + "\t列:" + getall[i].index + "\r\n" + "內容:\r\n" + getall[i].contentText + "\r\n");

            }
        }
    }
}

2


 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Tools
{
    public struct SearchInfo
    {
        public int line;
        public int index;
        public string filepath;
        public string contentText;
    }

    public class SearchFile
    {
        //public static List<SearchInfo> search(String filePath, string keyWord)
        //{
        //    StreamReader StrRead = File.OpenText(filePath);
        //    List<SearchInfo> allInfo = new List<SearchInfo>() { };
        //    int[] index_array = new int[2];
        //    int count = 0;
        //    while (!StrRead.EndOfStream)
        //    {
        //        SearchInfo searchInfo=new SearchInfo();
        //        string contentText=StrRead.ReadLine();
               
        //        int index = getKeyWordIndex(contentText, keyWord);
        //        if (index != -1)
        //        {
        //            searchInfo.line = count;
        //            searchInfo.index = index;
        //            searchInfo.filepath = filePath;
        //            searchInfo.contentText = contentText;
        //            allInfo.Add(searchInfo);
        //        }
        //        count++;
        //    }
        //    StrRead.Close();
        //    return allInfo;
        //}
        public static List<SearchInfo> search(String filePath, string keyWord)
        {
            string[] StrRead = File.ReadAllLines(filePath,Encoding.GetEncoding("gb2312"));
            List<SearchInfo> allInfo = new List<SearchInfo>() { };
            for (int i = 0; i < StrRead.Length; i++)
            {
                SearchInfo searchInfo = new SearchInfo();
                int index = getKeyWordIndex(StrRead[i], keyWord);
                if (index != -1)
                {
                    searchInfo.line = i;
                    searchInfo.index = index;
                    searchInfo.filepath = filePath;
                    searchInfo.contentText = StrRead[i];
                    allInfo.Add(searchInfo);
                }
            }
            return allInfo;
        }
        private static int getKeyWordIndex(string str, string keyWord)
        {
            int keyWordIndex=-1;
            try
            {
                keyWordIndex = str.IndexOf(keyWord);
            }
            catch (ArgumentNullException e)
            {
                keyWordIndex = -1;
            }
            return keyWordIndex;
        }
    }

    public class FindALLFile
    {
        public static string[] getAllFile(string dir, string suffix)
        {
            return Directory.GetFiles(dir, suffix, SearchOption.AllDirectories);
        }
    }
}

 

發佈了38 篇原創文章 · 獲贊 16 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章