string path = "C:/folder1/folder2/file.txt";
folder2
の結果が得られるオブジェクトまたはメソッドを使用できますか?
私はおそらく次のようなものを使用します:
string path = "C:/folder1/folder2/file.txt";
string lastFolderName = Path.GetFileName( Path.GetDirectoryName( path ) );
GetDirectoryName
の内部呼び出しはフルパスを返し、GetFileName()
の外部呼び出しは最後のパスコンポーネント(フォルダー名)を返します。
このアプローチは、パスが実際に存在するかどうかに関係なく機能します。ただし、このアプローチは、最初にファイル名で終わるパスに依存します。パスがファイル名で終わるのかフォルダ名で終わるのかわからない場合は、実際のパスを確認して、最初にその場所にファイル/フォルダーが存在するかどうかを確認する必要があります。その場合、ダン・ディミトルの答えがより適切かもしれません。
これを試して:
string filename = @"C:/folder1/folder2/file.txt";
string FolderName = new DirectoryInfo(System.IO.Path.GetDirectoryName(filename)).Name;
シンプルでクリーン。 System.IO.FileSystem
のみを使用-チャームのように機能します:
string path = "C:/folder1/folder2/file.txt";
string folder = new DirectoryInfo(path).Name;
パスにファイル名がない場合に、このコードスニペットを使用してパスのディレクトリを取得しました。
たとえば、「c:\ tmp\test\visual」;
string dir = @"c:\tmp\test\visual";
Console.WriteLine(dir.Replace(Path.GetDirectoryName(dir) + Path.DirectorySeparatorChar, ""));
出力:
ビジュアル
DirectoryInfoディレクトリ名を削除するジョブを実行します
string my_path = @"C:\Windows\System32";
DirectoryInfo dir_info = new DirectoryInfo(my_path);
string directory = dir_info.Name; // System32
var fullPath = @"C:\folder1\folder2\file.txt";
var lastDirectory = Path.GetDirectoryName(fullPath).Split('\\').LastOrDefault();
以下のコードは、フォルダー名のみを取得するのに役立ちます
public ObservableCollection items = new ObservableCollection(); try { string [] folderPaths = Directory.GetDirectories( stemp); items.Clear(); foreach(folderPathsの文字列s) { items.Add(new gridItems {foldername = s.Remove( 0、s.LastIndexOf( '\\')+ 1)、folderpath = s}); } } catch(例外a) { } public class gridItems { public string foldername {get;セット; } public string folderpath {get;セット; } }
また、ループでディレクトリ名のリストを取得している間、DirectoryInfo
クラスは1回初期化されるため、初回呼び出しのみが許可されることに注意することも重要です。この制限を回避するには、ループ内で変数を使用して個々のディレクトリ名を保存するようにしてください。
たとえば、このサンプルコードは、親ディレクトリ内のディレクトリのリストをループし、見つかった各ディレクトリ名を文字列タイプのリスト内に追加します。
[C#]
string[] parentDirectory = Directory.GetDirectories("/yourpath");
List<string> directories = new List<string>();
foreach (var directory in parentDirectory)
{
// Notice I've created a DirectoryInfo variable.
DirectoryInfo dirInfo = new DirectoryInfo(directory);
// And likewise a name variable for storing the name.
// If this is not added, only the first directory will
// be captured in the loop; the rest won't.
string name = dirInfo.Name;
// Finally we add the directory name to our defined List.
directories.Add(name);
}
[VB.NET]
Dim parentDirectory() As String = Directory.GetDirectories("/yourpath")
Dim directories As New List(Of String)()
For Each directory In parentDirectory
' Notice I've created a DirectoryInfo variable.
Dim dirInfo As New DirectoryInfo(directory)
' And likewise a name variable for storing the name.
' If this is not added, only the first directory will
' be captured in the loop; the rest won't.
Dim name As String = dirInfo.Name
' Finally we add the directory name to our defined List.
directories.Add(name)
Next directory