Potrzebuję uzyskać nazwę katalogu z jego ścieżki, niezależnie od tego, czy istnieje końcowy ukośnik odwrotny. Na przykład, użytkownik może wejściowe jeden z następujących 2 strun i muszę nazwę katalogu kłody:Uzyskaj nazwę katalogu z pełnej ścieżki katalogu, niezależnie od końcowego ukośnika
"C:\Program Files (x86)\My Program\Logs"
"C:\Program Files (x86)\My Program\Logs\"
żaden z poniższych daje poprawną odpowiedź ("Logs"
):
Path.GetDirectoryName(m_logsDir);
FileInfo(m_logsDir).Directory.Name;
Najwyraźniej analizować ciąg znaków i w pierwszym przykładzie decydują, że Logs
jest plikiem, podczas gdy naprawdę jest katalogiem.
Powinno więc sprawdzić, czy ostatnie słowo (Logs
w naszym przypadku) jest tak naprawdę katalogiem; jeśli tak, zwróć to, jeśli nie (Logi mogą być również plikiem), zwróć katalog nadrzędny. Jeśli wymagałoby to obsługi rzeczywistego systemu plików, zamiast analizowania samego ciągu.
Czy istnieje jakaś standardowa funkcja do tego?
Plik nie musi mieć rozszerzenie –
można wyjaśnić swoje pytanie, czy chcesz, aby zapewnić chwytając nazwę folderu dziennika, czy po prostu chcesz katalogu dzienników? – Greg
Chcę uzyskać "Logi", ale upewnij się, że to naprawdę folder, a nie plik. Sprawdzanie, czy plik 'System.IO.Directory.Exists (m_logsDir)' wygląda na wykonalne rozwiązanie. – dimnnv