You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#获取选中目录下文件对应主容器文件夹名称与路径求助

解决方案

要获取每个文件对应的**最初选中的根目录(主容器文件夹)**的名称和完整路径,核心是直接复用用户选择的根目录变量,不需要从文件路径向上遍历父级。具体修改如下:

步骤1:保存根目录信息

在button1_Click方法中,用户选择文件夹后,先保存根目录的完整路径和名称:

if (FBD.ShowDialog() == DialogResult.OK)
{
    // 清空列表等原有代码不变
    listBox1.Items.Clear();
    listBox2.Items.Clear();
    listBox3.Items.Clear();
    listBox4.Items.Clear();
    listBox5.Items.Clear();
    listBox6.Items.Clear();
    listBox7.Items.Clear();

    textBox1.Text = FBD.SelectedPath;

    // 新增:保存根目录的完整路径和名称
    string rootPath = FBD.SelectedPath;
    DirectoryInfo rootDirInfo = new DirectoryInfo(rootPath);
    string rootFolderName = rootDirInfo.Name;

    String directoryName = FBD.SelectedPath;
    DirectoryInfo dirInfo = new DirectoryInfo(directoryName);
    if (dirInfo.Exists == false)
        Directory.CreateDirectory(directoryName);

    // 原有获取文件列表的代码不变
    List<String> MyMusicFiles = Directory.GetFiles(textBox1.Text, "*.max", SearchOption.AllDirectories).ToList();

步骤2:遍历文件时添加主容器信息

在foreach循环内部,直接将根目录的名称和路径添加到对应的ListBox:

foreach (string file in MyMusicFiles)
{
    FileInfo mFile = new FileInfo(file);
    DirectoryInfo directoryInfo = new DirectoryInfo(mFile.DirectoryName);
    int fCount = Directory.GetFiles(mFile.Directory.FullName, "*.max", SearchOption.TopDirectoryOnly).Length;

    // 原有添加其他信息的代码不变
    listBox4.Items.Add(fCount);
    listBox2.Items.Add(mFile.Name);
    listBox3.Items.Add(Path.GetFileName(mFile.DirectoryName));
    listBox1.Items.Add(Path.Combine(mFile.DirectoryName, mFile.Name));

    // 新增:添加主容器文件夹名称和完整路径
    listBox6.Items.Add(rootFolderName);
    listBox7.Items.Add(rootPath);

    // 原有listBox5的代码可根据需求保留或调整
    if (directoryInfo.Parent != null)
    {
        listBox5.Items.Add(Directory.GetParent(mFile.FullName).Parent);
    }
    else
    {
        string up2 = directoryInfo.Root.ToString().Split(Path.DirectorySeparatorChar)[2];
        listBox5.Items.Add(up2);
    }
}

说明

你之前的代码尝试通过directoryInfo.Parent获取父级目录,这是在获取文件所在文件夹的上级目录,而非最初选中的根目录,所以不符合需求。直接复用FBD.SelectedPath和对应的目录名称,就能确保所有文件对应的主容器信息都是用户最初选择的根目录,无论文件处于多少层级的子文件夹中。

内容的提问来源于stack exchange,提问作者Amro Omran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:25:27