title: C# Create Directory based on ZIP code value of file and Transfer Files using System.IO, System.Data, & CSVReader
body: <p><strong>Existing App:</strong> I have a C# app that runs a search and fetches matching lead files and throws them into a specificied directory. </p>
  
  <p><strong>Adding functionality to:</strong> have the system check to see if a subdirectory exists for the file's zip code and if it doesn't exist create it, then i want the file transfered into that respective directory. </p>
  
  <p><strong>Problem:</strong> Right now, none of the files are transferring and none of the subdirectories are being created. Nothing happens. Is it a syntax issue or am I calling it wrong???</p>
  
  <p>Please help! </p>
  
  <p>Here's what I added: </p>
  
  <pre><code>            string targetzipdir = m_sc.get_TargetPath() + "\\" + ZIP;
              // If the zip code subdirectory doesn't exist, create it.
  
              if (!Directory.Exists(targetzipdir))
              {
                   Directory.CreateDirectory(targetzipdir);
              } 
  
           private void TransferFile(string sourceDir, string filename, string ZIP)     
           { 
              string targetFileAndPath = m_sc.get_TargetPath() + "\\" + ZIP + "\\" + fullFileName;
  </code></pre>
  
  <p>Here's more of the code in the SearchProcess.cs file for the bigger picture (with some stuff left off): </p>
  
  <pre><code>    public void Run()
      {
          m_sc = (SearchCriteria)m_form.Invoke(m_form.m_DelegateGetSearchCriteria);
          // Display parameters
          m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on Corp: " + m_sc.get_Corp() });
          m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on OrderNumber: " + m_sc.get_OrderNumber() });
          m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on Campaign: " + m_sc.get_Campaign() });
          m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on City: " + m_sc.get_City() });
          m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on State: " + m_sc.get_State() });
          m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on Zip: " + m_sc.get_Zip() });
          m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on Source Path: " + m_sc.get_SourcePath() });
          m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on Target Path: " + m_sc.get_TargetPath() });
  
          DirSearch(m_sc.get_SourcePath());
  
          // Make asynchronous call to main form
          // to inform it that thread finished
          m_form.Invoke(m_form.m_DelegateThreadFinished, null);
      }
  
              for (int colNum = 0; colNum &lt; expectedTypes.Count; colNum++)
              {
              if (m_sc.get_SearchOR().Equals(true))
                  // Check for the Zip match
                  if (m_sc.get_Zip() != "" &amp;&amp; ZIP.Contains(m_sc.get_Zip()) == true)
                  {
                      found = true;
  
                      string targetzipdir = m_sc.get_TargetPath() + "\\" + ZIP;
                      // If the zip code subdirectory doesn't exist, create it.
  
                      if (!Directory.Exists(targetzipdir))
                      {
                          Directory.CreateDirectory(targetzipdir);
                      } 
  
                  }     // ending if (m_sc.get_SearchOR().Equals(true))
              }         //ending for loop  
  
      private void TransferFile(string sourceDir, string filename, string ZIP)
      {
          string fullFileName = filename + ZIP + ".pdf";
          string fullFileNameAndPath = sourceDir + "\\" + fullFileName;
  
          //copy matching source file into the specified subdirectory based on zip
          string targetFileAndPath = m_sc.get_TargetPath() + "\\" + ZIP + "\\" + fullFileName;
          // Copy the file if the source file exists
          if (File.Exists(fullFileNameAndPath))
          {
              m_form.Invoke(m_form.m_DelegateAddString, new Object[] {"COPYING FROM: " + fullFileNameAndPath});
              m_form.Invoke(m_form.m_DelegateAddString, new Object[] {"TO: " + targetFileAndPath});
              // Do the copy, overrite the target file if it exists
              File.Copy(fullFileNameAndPath, targetFileAndPath, true);
          }
          else
          {
              m_form.Invoke(m_form.m_DelegateAddString, new Object[] {"Source file does not exist: " + fullFileNameAndPath});
          }
          m_form.Invoke(m_form.m_DelegateAddString, new Object[] {""});
      }
  </code></pre>
  
  <p>Thanks for looking! Any ideas would be greatly appreciated! :) </p>