Задача сценария SSIS Проверить, пуста ли папка

В задаче сценария SSIS у меня есть приведенный ниже код, который проверяет, пуста ли папка. Затем я хочу передать, есть ли это или нет, в переменную «Dim_File_Count» и использовать ограничение приоритета, чтобы перейти к следующей задаче в случае успеха. Однако мой код продолжает указывать, что папка пуста, даже если это не так:

public void Main()
{
    //string FolderName = Dts.Variables["User::Tech_Dim"].Value.ToString();

    if (File.Exists(Dts.Variables["User::Tech_Dim"].Value.ToString())==false)
    {
        Dts.Variables["User::Dim_File_Count"].Value = 0;
        MessageBox.Show("folder empty");
    }
    else
    {
        Dts.Variables["User::Dim_File_Count"].Value = 1;
        MessageBox.Show("folder is not empty");
    }



    Dts.TaskResult = (int)ScriptResults.Success;
}

person Michael    schedule 03.12.2018    source источник
comment
Попробуйте удалить ToString(). Возвращаемое значение уже является строкой.   -  person jdweng    schedule 03.12.2018
comment
File.Exists проверяет, существует ли указанный файл. Подача ему имени каталога всегда будет терпеть неудачу. Используйте Directory.GetFiles(...).Any() (или, меньше памяти, new DirectoryInfo(...).EnumerateFiles().Any()).   -  person Jeroen Mostert    schedule 03.12.2018
comment
Я пробовал, но не работает: if Directory.GetFiles(Dts.Variables[User::Tech_Dim].Value.ToString()).Any();   -  person Michael    schedule 03.12.2018
comment
Также попробовал это, и это не работает: if new DirectoryInfo(Dts.Variables[User::Tech_Dim].Value.ToString()).EnumerateFiles().Any()) ;   -  person Michael    schedule 03.12.2018


Ответы (1)


Вы можете использовать свойство Length метода GetFiles класса Directory, чтобы проверить, есть ли файлы в указанной папке. Необязательный третий параметр SearchOption для GetFiles можно использовать, если необходим поиск в подкаталогах, например SearchOption.AllDirectories, при этом по умолчанию проверяется только родительская папка.

    if (Directory.GetFiles(Dts.Variables["User::Tech_Dim"].Value.ToString(), "*").Length > 0)
    {
        Dts.Variables["User::Dim_File_Count"].Value = 0;
        MessageBox.Show("folder empty");
    }
    else
    {
        Dts.Variables["User::Dim_File_Count"].Value = 1;
        MessageBox.Show("folder is not empty");
    }
person userfl89    schedule 03.12.2018