C# 检查文件夹中是否存在文件

C# 检查文件夹中是否存在文件,c#,foreach,ssis,C#,Foreach,Ssis,我有一个For-Each循环容器,用于处理每晚到达的文件。我定义了三个用户变量:FolderPath(“I:\Data Analytics\Referral”)、FileName(blank)——只读变量、FileExistsFlg——ReadWriteVariables。前两个是字符串,最后一个是int。我已将“using System.IO;”添加到我的命名空间中。FileExistsFlg的值为0—添加变量时的默认值 这是我的C#代码: 任务将执行,但当实际上存在文件时,它始终返回值0。我

我有一个For-Each循环容器,用于处理每晚到达的文件。我定义了三个用户变量:FolderPath(“I:\Data Analytics\Referral”)、FileName(blank)——只读变量、FileExistsFlg——ReadWriteVariables。前两个是字符串,最后一个是int。我已将“using System.IO;”添加到我的命名空间中。FileExistsFlg的值为0—添加变量时的默认值

这是我的C#代码:

任务将执行,但当实际上存在文件时,它始终返回值0。我正在使用MessageBox.Show(..)测试脚本

如果我在变量中提供一个特定的文件名,代码将正常工作,但是文件名每天都会更改。如果我将变量留空,那么它将返回0

这对我来说并不是火箭科学,我很困惑为什么它总是返回一个错误的值


谢谢。

我假设您想从文件夹中获取所有文件。您可以使用来执行此操作:

  string mypath = "C:/myfolder/";
  string[] files = Directory.GetFiles(mypath);
然后,您可以像这样运行所有文件:

   foreach(string item in files){

     if(item.Contains("my file name without the extension")){
        //Do Something
     }

   }
------编辑#1

foreach语句的string变量包含文件的文件路径

------编辑#2
如果在第一个If语句中出现错误,说明“!”运算符不能应用于整数,则将foreach代码放入else语句中

string mypath = "C:/myfolder/";
string[] files = Directory.GetFiles(mypath);
if(files.Length == 0){

 //do nothing. No files are in the folder.

}else{

foreach(string item in files){

   //Do something. Files are in the folder.

 }
}


根据我对这个问题的理解,foreach语句中包含处理和归档文件的代码。名为“item”的字符串应该包含文件的路径。

为什么您会在这里感到惊讶?Exists需要检查文件名,如果不提供文件名,为什么希望返回true?什么为True?检查目录是否存在,获取文件列表计数其中有多少?旁注:如果要生成文件路径,应使用
System.IO.path.Combine
而不是字符串串联。是否可能
Dts.Variables[“User::FolderPath”]
不包含尾部反斜杠?messagebox显示的路径真的正常吗?正如Igor所提到的,您应该通过
System.IO.path.combine
组合路径和文件名。哦,要查看是否有任何文件,您不需要文件名:只需要文件夹名。然后可以执行
bool anyFiles=Directory.EnumerateFiles(“文件夹名”).Any()基本上,我只需要知道是否有任何文件要处理。如果有,则“我的标志”值等于1;如果没有文件,则该值=0。这将确定我的数据流任务是否执行。文件名每天都在变化。唯一的共同点是它们是CSV文件。您是否有已处理文件的单独列表?为了帮助澄清,我只需要知道指定文件夹中是否有任何文件。我不需要知道他们的名字。我只是想知道有没有。如果有文件,For Each循环容器将在DFT中处理它们,然后我将它们移动到存档文件夹中。让我编辑我的答案以给出正确的答案。是的,非常感谢!!!!!!!
string mypath = "C:/myfolder/";
string[] files = Directory.GetFiles(mypath);
if(!files.Length == 0){

 foreach(string item in files){

   //Run rest of code using the item

 }

}else{}
string mypath = "C:/myfolder/";
string[] files = Directory.GetFiles(mypath);
if(files.Length == 0){

 //do nothing. No files are in the folder.

}else{

foreach(string item in files){

   //Do something. Files are in the folder.

 }
}