C# Создать каталог на основе значения почтового индекса файла и передачи файлов с использованием System.IO, System.Data и CSVReader

Существующее приложение: у меня есть приложение на C#, которое запускает поиск, выбирает совпадающие файлы ссылок и выбрасывает их в определенный каталог.

Добавление функциональности: попросите систему проверить, существует ли подкаталог для почтового индекса файла, и, если он не существует, создайте его, тогда я хочу, чтобы файл был перенесен в этот соответствующий каталог.

Проблема: Прямо сейчас, ни один из файлов не передается, и ни один из подкаталогов не создается. Ничего не произошло. Это проблема с синтаксисом, или я называю это неправильно???

Пожалуйста помоги!

Вот что я добавил:

            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;

Вот больше кода в файле SearchProcess.cs для большей картины (с некоторыми оставленными вещами):

    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 < expectedTypes.Count; colNum++)
            {
            if (m_sc.get_SearchOR().Equals(true))
                // Check for the Zip match
                if (m_sc.get_Zip() != "" && 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[] {""});
    }

Спасибо за внимание! Благодарим за любую идею!:)

1 ответ

Решение

Я нашел проблему! У меня был код для создания каталога в неправильном месте. Он находился в операторе If для сопоставления почтового индекса и выполнялся только в том случае, если почтовый индекс совпадал, а почтовый индекс является необязательным полем в поиске. Я переместил весь код в метод TransferFile, и он работал нормально. Кроме того, исходный каталог данных должен был указывать на C:\Documents and Settings\bmccarthy\Desktop\sourcedir, а файлы должны быть в специальном формате в подкаталоге этого каталога в C: \ Documents and Settings \ bmccarthy \ Desktop \ SourceDir\AMLDailyHotLeads20101001

Вот переписанный код:

            // Copy the file if ANY of the search criteria have been met
            if (found)
            {

                m_form.Invoke(m_form.m_DelegateAddString, new Object[] {"FOUND: Order_No: " + Order_No +
                                                                        " barcode: " + barcode +
                                                                        " MailerCode: " + MailerCode +
                                                                        " AgentID: " + AgentID +
                                                                        " City: " + City +
                                                                        " State: " + State +
                                                                        " ZIP: " + ZIP});
                //passes values to TransferFile 
                TransferFile(directory, barcode, AgentID, ZIP);
            }
        } // end for that finds each matching record 

    }

    // find and copy the file to the target directory string ZIP
    private void TransferFile(string sourceDir, string filename, string AgentID, string ZIP)
    {
        string fullFileName = filename + ".pdf";
        string fullFileNameAndPath = sourceDir + "\\" + fullFileName;
        string targetFileAndPath;

            // adds the given lead's agentid and zip code to the targetpath string 
            string targetzipdir = m_sc.get_TargetPath() + "\\" + AgentID + "\\" + ZIP;

            // If the given lead's zip code subdirectory doesn't exist, create it.
            if (!Directory.Exists(targetzipdir))
            {
                Directory.CreateDirectory(targetzipdir);
            }

            targetFileAndPath = m_sc.get_TargetPath() + "\\" + AgentID + "\\" + 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});

            // Copy the file and over-write 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[] {""});
    }
Другие вопросы по тегам