TextSearch-1.0 reveals the track to enhance the search functionality of Text Documents belonging to the same path/folder.
Description
TextSearch-1.0 allows users to search for a specific word from many text documents (File Format: *.txt) that belongs to the same directory, with no need to open individual files to search for a word or text. It has a simple GUI.
About the classes used:
- The FolderBrowserDialog class allows users to select a folder.
- The Directory class allows a user to enumerate the files available at a specified directory path.
- The StreamReader class provides a access for reading the data from a Stream such as a Text File.
- The Process class, to allow a user to start a specific process.
Namespace Required
System.IO, 
System.Diagnostics
Controls Used
The controls that are used are:
- TextBox Control (txtFolder, txtSearch)
- ListBox Control (lbFiles)
- Button Control (btnFolder, btnSearch, btnReset)
Here I present the code for finding a text file(s) with a specified word or text provided as a search string.
The Code
1. Variable Declarations:
String target = ""; // Target string to Search
String path = "";   // Path of Directory
string[] files;     // Store file name(s) from given path
bool search;        // 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 in files)  //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 clicking 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 files which includes a string to be searched.
void Search()
      {
            int j = 0;        // to set the index of "list" array
            target = txtSearch.Text;
            list = new string[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 the result text files at an OnClick Event of "Search" button.
6. Now execute the Application & see the intended results (Figure 1 & 2).
Intended Result
![Figure 1.jpg]()
Figure 1: After selecting a folder
![Figure 2.jpg]()
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").
- The user can open a file, by double-clicking the file name.
Summary
The Program TextSearch-1.0 is written in Visual C#, which allows a user to search for text files which include a specified word or text.