0

我有这段代码可以从文件夹及其子目录中获取所有文件。

FolderBrowserDialog fb = new FolderBrowserDialog();
            if (fb.ShowDialog() == DialogResult.OK)
            {
                foreach (string folder in System.IO.Directory.GetFiles(fb.SelectedPath, "*.*", System.IO.SearchOption.AllDirectories))
                    listBox1.Items.Add(Path.GetFullPath(folder));
            }

但它返回的文件路径如下: C:\Users\RANDOM\Desktop\TheSelectedFolder\SubFolder1\Subfolder2\file.txt 我怎样才能让它只返回选定文件夹的名称加上子目录的路径?没有驱动器号,用户名等。

4

2 回答 2

1
silliness = Path.Combine( Path.GetDirectoryName(fb.SelectedPath),
                          folder.Replace(fb.SelectedPath, String.Empty)
                         )
于 2013-05-09T04:53:05.840 回答
0

如果你使用

System.IO.Path.GetDirectoryName(filePath)

在哪里

filePath = "C:\Users\RANDOM\Desktop\TheSelectedFolder\SubFolder1\Subfolder2\file.txt"

它应该返回

`"C:\Users\RANDOM\Desktop\TheSelectedFolder\SubFolder1\Subfolder2"`

然后,您可以使用诸如@"^[a-zA-Z]\:\Users\[^]+\"之类的正则表达式来删除您不想要的路径。

编辑:现在我的大脑已经听到了,我可以看到我给出的答案已经给出了。

Path.Combine(Path.GetDirectoryName(selectedFolder),filePath.Replace(selectedFolder,String.Empty))
于 2013-05-09T04:52:05.653 回答