c# - C#检查文件夹中是否存在文件
问题描述
我有一个 For Each Loop 容器,用于处理每晚到达的文件。我定义了三个用户变量:FolderPath(“I:\Data Analytics\Referral”)、FileName(空白)——只读变量、FileExistsFlg——ReadWriteVariables。前两个是字符串,最后一个是 int。我添加了“使用 System.IO;” 到我的命名空间。 FileExistsFlg 的值为 0——我添加变量时的默认值。
这是我的 C# 代码:
public void Main()
{
// TODO: Add your code here
String FilePath = Dts.Variables["User::FolderPath"].Value.ToString()
+ Dts.Variables["User::FileName"].Value.ToString();
if ( File.Exists(FilePath))
{
Dts.Variables["User::FileExistsFlg"].Value = 1;
}
MessageBox.Show(FilePath);
MessageBox.Show(Dts.Variables["User::FileExistsFlg"].Value.ToString());
Dts.TaskResult = (int)ScriptResults.Success;
}
任务执行,但实际上有文件时它总是返回值 0。我正在使用 MessageBox.Show(. . . .) 来测试脚本。
如果我在变量中提供特定的文件名,代码可以正常工作,但文件名每天都会改变。如果我将变量留空,则它返回 0。
这并不像火箭科学那样让我震惊,我很困惑为什么它总是返回一个错误的值。
谢谢。
解决方案
我假设您想从文件夹中获取所有文件。您可以使用System.IO.Directory.GetFiles来执行此操作:
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
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{}
foreach 语句的字符串变量包含文件的文件路径。
----------- EDIT #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”的字符串应该包含文件的路径。
推荐阅读
- java - 命令解释器的问题
- jdbc - 如果 JDBC 响应时间太长,是否有可能在 Jmeter 中导致样本失败?
- c++ - 虚幻引擎 4 和 C++。攻击功能很好,直到使用if语句仅在装备武器时进行攻击
- reactjs - 使用 react-hot-loader 时 Webpack HMR 不会重新加载
- php - 我对丹麦字母 ÆØÅ 有疑问
- reactjs - “提升状态”或将状态设置器分享给孩子是更好的做法吗?
- docker - Docker 为 VueJS 与 GitlabCI 构建不一致
- java - CodeJam 的嵌套深度 - 已解决提示,但需要连接字符串 - 程序在输出中返回“Case # :”
- javafx - JavaFX 窗口大小小于 SceneBuilder
- bitmap - GMS3 中对话图形的部署是否发生了变化?