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 に答える