ファイルの中の文字を探すツールの作り方2(ソースコード)

このソースは「ファイルの中の文字を探すツールの作り方」の内容です

 

ソースコードはこちらになります

 

 

       private void listBox1_DragDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                foreach (string fileName
                    in (string[])e.Data.GetData(DataFormats.FileDrop))
                {
                    listBox1.Items.Add(fileName);
                }
            }
        }

        private void listBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                for (int i = 0; i <= listBox1.SelectedItems.Count; i++)
                {
                    listBox1.Items.Remove(listBox1.SelectedItem);
                }
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
        }
        private void button3_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string path;
            string src_utf;
            string src_sift;
            int datacnt = 0;
            System.IO.StreamReader reader;

            string key_old = textBox2.Text;

            bool ChangeFlg;

            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                path = listBox1.Items[i].ToString();

                string[] files = { path };

                if (System.IO.File.Exists(path))
                {
                    // ファイルだ!
                }
                else
                {
                       //ディレクトリだ!
                    files = System.IO.Directory.GetFiles(path, "*", System.IO.SearchOption.AllDirectories);
                }



                foreach (string searchfile in files)
                {

                    label1.Text = searchfile;
                    System.Windows.Forms.Application.DoEvents();

                    reader = new System.IO.StreamReader(searchfile, System.Text.Encoding.GetEncoding("utf-8"));
                    src_utf = reader.ReadToEnd();
                    reader.Close();

                    reader = new System.IO.StreamReader(searchfile, System.Text.Encoding.GetEncoding("shift_jis"));
                    src_sift = reader.ReadToEnd();
                    reader.Close();

                   if (src_utf.IndexOf(key_old) != -1)
                   {
                       textBox1.Text = textBox1.Text + searchfile + "\r\n";
                       datacnt++;
                   }else if(src_sift.IndexOf(key_old) != -1){
                       textBox1.Text = textBox1.Text + searchfile + "\r\n";
                       datacnt++;
                   }
               }

            }

            label1.Text = "FIX=" + datacnt.ToString() ;


            MessageBox.Show("OK");
        }

ファイルの中の文字を探すツールの作り方

C#でつくる簡単プログラム

ファイルを開いて中の文字を検索して、検索文字が入っていたファイルをリストアップします。

EC-CUBEやMagentoなどオープンソースの便利なシステムがたくさんあります。
でも「この部分を変更したい」というときに
「”この部分”がどこにあるのか探したい」というときに便利です。

例によってツールはVisualstudioのC#を使用しています。
「VisualstudioのC#」はMicrosoftが提供している無料の開発ツールです。
C#の使い方はここでは割愛させていただきます。

文字を探すツールの使い方

  1. phpなどのプログラムが一式が入ったフォルダをツールにドラッグします
  2. 調べたい文字を入力します
  3. 「検索」を押すと文字が記述されたファイルをリストアップします

 

プログラム

使うツールボックス

まずフォームに「listbox1」「textbox1」「textbox2」「button1」「button2」「button3」「label1」を置きます

 

 

プロパティの設定

  • listbox1(探すディレクトリをドラッグドロップするとこ)
    Allowdorop=true
  • textbox1(結果を表示するとこ)
    Mulitiline=true
    ScrollBars=Vertical
  • button1
    text=探す
  • button2、button3
    text=クリア

 

プログラム

きちんとイベントに結び付けてから記述してください

 

ソースコードはコチラです
 ↓
ファイルの中の文字を探すツールの作り方2(ソースコード)

 

動作確認

CuctomEntoryの中に入っているファイルすべての中で「電話」と書いてあるファイルを表示します。

  1. ディレクトリごとドラッグドロップ
  2. 探したい文字を入力
  3. 「探す」クリック
  4. 結果が一覧で出てくる

 

 

検証

なんかエラー出た。まぁいいやwごめん。
昔作ったツールの焼き直しだから、使っていない変数とかあったw

あと細かくは適当に直してください。