首先用FolderBrowserDialog获取目标文件夹,如果不要求可视化也可以直接在文本框中输入,从其的SelectedPath属性中就可以获取目标路径。
FolderBrowserDialog folder = new FolderBrowserDialog();
folder.ShowDialog();
string Root = folder.SelectedPath;
这里将获取的路径记录为根路径,后面有用。
使用方法GetFiles获取该文件夹下所有的文件
string[] filedir = Directory.GetFiles(Root, "*", SearchOption.AllDirectories);
此时得到会得到所有文件的绝对路径
可以使用Replace将路径中的根目录替换为空格
filedir[i] = filedir[i].Replace(Root, " ");
随后使用Split按照路径分隔符('\\')拆开,即可得到其从根目录以来的所有层级的文件夹名称
string[] items = filedir[i].Split('\\');
至于获取文件名则可以对items[2]使用Split按照后缀分隔符('.')切割
items[3].Split('.')[0]
此方案适合用于层级已知且层级中含有分类信息的情况。将所有数据分割出来之后可以很方便的进行后续处理。