Jeff 隨手記

記下學習的點滴,它日回頭看來就是成長 ~

文章數(139) 回應數(897) 引用數(0)

找出純文字檔裡的關鍵字

DotBlogs Tags: .Net C 小工具
我要推薦 | 閱讀數 : 593 | Category: .Net隨手記 自製程式 訂閱

最近因為常在多個純文字檔案找關鍵字,雖然很多文字編輯工具都有這個功能,但總覺得它的效能不好,有的一跑起來,就像當掉一樣,所以就寫了一個小工具來解決自己所遇到的問題,減少每次搜尋的等待時間.

 

這工具的介面很簡單,因為是自己在用,就沒加入什麼防呆的動作,基本畫面如下:

路徑:點一下,就會開啟瀏覽資料匣的視窗,供選擇欲搜尋的目錄.

副檔:以逗號的方式做分隔,因為filter的關係,*.asp也會帶出*.aspx等檔案,只有副檔名長度為3才會這樣,其它不會.

條件:就是輸入欲查詢的關鍵字.

子目錄 : 打勾才會連子目錄也找

分大小寫 : (這個不用說吧....)

接下來按下查詢,就會帶出查詢結果.

上面的Grid就是有找到的檔案,與下面的Grid是Master-Detail的關係,下面的Grid就是這個檔案在第幾行有找到這關鍵字,程式碼內容.

如果連點上面的Gird,就會用檔案總管開啟那個目錄並選取那個檔案.

 

大致上就這樣,用了幾天還OK,如果要再改的,下面有提供原使碼,就自便吧~

 

***2010/2/21修改

1. 加入了文字檔的編碼判斷,判斷方式可參考另一篇文章[判斷文字檔案的編碼方式]

2. 針對DirectoryInfo.GetFiles的Search Pattern特性做調整.

SearchPattern 在副檔名長度正好為三個字元時的比對行為與在副檔名長度大於三個字元時不相同。恰為三個字元的 searchPattern  會傳回三個 (含) 以上字元的副檔名。一個、兩個或三個字元以上的 searchPattern  只會傳回具有正好該長度副檔名的檔案。

參考 :

MSDN DirectoryInfo.GetFiles 方法 (String)

 

執行程式 : TextFinder.zip

原始碼 : TextFinderSrc.zip

  • kennyshu 2010/2/6 上午 01:44 回覆

    # re: 找出純文字檔裡的關鍵字

    不錯喔~

    下面這個似乎也符合你的需求,應該不用在寫個潛盾機了 :)
    http://goo.gl/fwdj

  • kennyshu 2010/2/6 上午 01:46 回覆

    # re: 找出純文字檔裡的關鍵字

    剛剛那個軟體,這邊也有詳細的使用說明
    http://goo.gl/l3Ut

    希望有幫助~

  • jeff-yeh 2010/2/6 上午 11:35 回覆

    # re: 找出純文字檔裡的關鍵字

    to kennyshu :

    這類型的工具之前有找過,不過我不是很喜歡建Index這部份 >,<

    因為我要的很簡單^^

    不過,謝謝推薦~

  • Keanu 2010/2/6 下午 04:36 回覆

    # re: 找出純文字檔裡的關鍵字

    我滿推荐 grepWin 這個小工具,它跟檔案總管整合,支援 RE,輕巧易用,試試看︰

    http://tools.tortoisesvn.net/grepWin

  • lin 2010/2/8 上午 11:27 回覆

    # re: 找出純文字檔裡的關鍵字

    不知道為什麼,我的資料夾有好幾個,
    每次他卻找到第五個資料夾後就不繼續了@@
    EX:
    folder/1~20/1~30

    他只能找到folder/1/5
    其他資料夾就都沒去跑了

  • lin 2010/2/8 上午 11:50 回覆

    # re: 找出純文字檔裡的關鍵字

    我發現,好像是因為folder/1/1~5
    只有這幾個資料夾內的檔案是 UTF-16的編碼
    其他檔案是 UTF-8 (無BOM)

  • jeff-yeh 2010/2/9 下午 08:44 回覆

    # re: 找出純文字檔裡的關鍵字

    to lin :

    應該不是沒去跑,是Encoding的問題,如果指定Encoding是錯誤,讀進來的String是亂碼,當然也不會符合你的查詢條件.

  • lin 2010/2/10 下午 08:17 回覆

    # re: 找出純文字檔裡的關鍵字

    to jeff-yeh :
    謝謝!
    我再學看看C#看能不能自己修正,
    主要是因為一個資料夾底下同時有utf-8 以及 utf-16的兩種編碼的檔案,
    而預設程式似乎只讀到utf-16的檔案

  • jeff-yeh 2010/2/21 下午 06:07 回覆

    # re: 找出純文字檔裡的關鍵字

    to lin :

    程式已針對編碼方式做了改善,但沒有BOM的檔案,還是用預設.

標題 *
名稱 *
Email (將不會被顯示)
Url
回應
登入後使用進階評論
Please add 6 and 6 and type the answer here: