TextSearch (Release 1.0) — From Multiple Text Documents


The TextSearch-1.0reveals the track to enhance the search functionality of Text Documents(s) belongs to same path/folder.
Description:
TextSearch-1.0, allows user to search a specific word from many text documents (File Format: *.txt)that belongs to same directory, with no need to open individual file(s) to search a word/text. It has simple GUI.
About Classes used –
#1: FolderBrowserDialog class allows user to select a folder.
#2: Directoryclass allows user to enumerate the file(s) available at specified directory path.
#3: StreamReader class provides an access to read the data from Stream such as Text File.
#4: Processclass, to allow user to start a specific process.

Namespace Required                    System.IO,

System.Diagnostics
Controls Used                     
            1. TextBox Control (txtFolder, txtSearch)
          2. ListBox Control (lbFiles)
          2. Button Control (btnFolder, btnSearch, btnReset)
           
Here I present a Code for finding a text file(s) with a specified word/text provided as search string.
           
The Code:
1. Variable Declarations
            String target = “”; // Target string to Search
            Stringpath = “”;   // Path of Directory
            string[] files;     // Store file name(s) from given path
            boolsearch;        // Determine whether Target string present or NOT
            string[] list;      // Store file name(s) which includes Target string
Listing 1
2. List All Text File(s) (File Format: *.txt)
           
      void getFiles()
            {
                  lbFiles.Items.Clear();    //Clears the Previous file list (if any)
                  path = txtFolder.Text;    //Current path of selected folder
                 
              if (path != “”){
                  // Collects the name of files with extension of “.txt”
                  files = Directory.GetFiles(@path, “*.txt”);
                 
                  foreach(string item infiles)  //Add File Name to ListBox
                    lbFiles.Items.Add(Path.GetFileName(item));
                  //Display Total No. of Files
                  lblTotal.Text = “Total Files: “ + lbFiles.Items.Count.ToString(); }
            }
Listing 2
   
3. After Click the “Folder” button, assign the selected path from to txtFolder TextBox, & call the getFiles()method to list all files within that folder.
4. List All Text File(s) which includes a string to be search.
      void Search()
      {
            int j = 0;        // to set the index of “list” array
            target = txtSearch.Text;
            list = newstring[lbFiles.Items.Count];
            for (int i = 0; i < lbFiles.Items.Count; i++)
            {
                  search = false;
                  //Check whether Target String available within List of Text File(s)
                  if(!((new StreamReader(path + “\”
                                    + lbFiles.Items[i]).ReadToEnd()).Contains(target)))
                  { search = true; }
                  list.SetValue(search.ToString(), j);
                  j++;
            }
            //Delete File(s) from Search (if Search Not Found)
            for (int i = list.Length – 1; i >= 0; i–)
            {
                  if(list.GetValue(i).ToString() != “False”)
                        lbFiles.Items.RemoveAt(i);
            }
      }
Listing 3
5. Call a Search() method to list a resultant text file(s) at an OnClick Event of “Search”button.
6. Now execute the Application & see the intended result (Figure 1 & 2).
         
Intended Result:

Figure 1: After Select a Folder

Figure 2: After specifying a string to search


Additional Functionality:

  •  TextSearch-1.0, allow to regain a list of initial text files as before search (“Reset Search”).
  •   User can open a file, by double clicking the file name.

Summary:
          The Program TextSearch-1.0 is written is Visual C#, which allows a user to search a text file(s) which includes a specified word/text.
Regards,
Mayur Dighe
http://ImmortalDotNet.blogspot.com
http://MayurDighe.wordpress.com