0

现有应用程序:我有一个 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[] {""});
    }

感谢您的关注!任何想法将不胜感激!:)

4

1 回答 1

0

我发现了问题!我有在错误位置创建目录的代码。它位于邮政编码匹配的 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[] {""});
    }
于 2011-02-24T21:21:43.797 回答