【发布时间】:2017-04-17 08:30:55
【问题描述】:
试图想出一种方法来使用递归或 linq 遍历目录树以获得具有以下形式的文件名:“C:\Program Files(x86)\Folder1\Folder2\TargetParentFolder\TargetFolder\ TargetFolderName.ext" 基本上,文件名将与文件夹名称完全相同,并具有已知类型的文件扩展名,并将位于 TargetFolder 目录中。然后我想打开“TargetFolderName.ext”文件在该文件中找到一个特定的字符串(字符串将始终在文件中)修改字符串,保存并关闭文件向上移动目录树到 TargetParentFolder 获取下一个子文件夹并对下一个 TargetFolder 中的文件重复修改。到目前为止,我所拥有的是:
FolderBrowserDialog folderPicker = new FolderBrowserDialog();
if (folderPicker.ShowDialog() == DialogResult.OK)
{
lsvAddons.Items.Clear();
List<string> folders = new List<string>(Directory.EnumerateDirectories(folderPicker.SelectedPath));
foreach (var folder in folders)
{
var folderName = Path.GetDirectoryName(Path.GetDirectoryName(folder));
var file = Directory.GetFiles(folderName, "*.toc", SearchOption.AllDirectories)
.FirstOrDefault();
ListViewItem item = new ListViewItem(folderName);
item.Tag = folder;
lsvAddons.Items.Add(item);
}
}
理想情况下,不会有一个 ListView 控件,而是一个集合,该集合将保存文件夹和每个匹配的文件名,以便在填充集合后进行迭代修改。想法?
【问题讨论】: