【发布时间】:2018-05-31 20:14:29
【问题描述】:
下面的代码只返回循环中的最新值。我需要做什么才能显示所有正在迭代的值?我使用这种方法而不是SearchOption.AllDirectory 的原因是因为有一个我无法访问的文件夹路径。我确实尝试将UnauthorizedAccessException 与try 和catch 一起使用,但这会返回一个空值,因为它会继续终止循环。
public void Main()
{
string path = @"drive"; // TODO
ApplyAllFiles(path, ProcessFile);
}
public void ProcessFile(string path)
{
/* ... */
}
public void ApplyAllFiles(string folder, Action<string> fileAction)
{
System.Collections.ArrayList FileList = new System.Collections.ArrayList();
List<string> logger = new List<string>();
DateTime DateFilter = DateTime.Now.AddMonths(-6);
foreach (string file in Directory.GetDirectories(folder))
{
fileAction(file);
}
foreach (string subDir in Directory.GetDirectories(folder))
{
string rootfolder = "root folder";
if (subDir.Contains(rootfolder))
{
FileList.Add(subDir);
Dts.Variables["User::objDirectoryList"].Value = FileList;
//MessageBox.Show(subDir);
}
try
{
ApplyAllFiles(subDir, fileAction);
}
catch (UnauthorizedAccessException e)
{
logger.Add(e.Message);
}
catch (System.IO.DirectoryNotFoundException e)
{
logger.Add(e.Message);
}
}
}
【问题讨论】:
-
你在说什么对象?可能是
FileList? “回归”对你意味着什么?你在“展示”什么“价值观”,在哪里? -
你在说
Dts.Variables["User::objDirectoryList"].Value = FileList;吗?如果是这种情况,您可能希望将其移到 for 循环之外 -
@EdPlunkett 我正在尝试将 FileList 数组分配给对象变量 User::objDirectoryList,它应该返回一个文件夹路径列表。但是,现在它只返回列表中的最后一个文件夹路径。
-
@Nilesh 是的,我有,但它不会运行任何东西。
标签: c# arrays ssis etl subdirectory