Учитывая строку, которая относится к каталогу, как я могу убедиться, что есть символ закрытия \
? Например, C:\foo
- это каталог, а также C:\foo\
. Есть ли способ System.IO.Path
, который гарантирует, что есть окончание \
?. NET: System.IO.Path
ответ
Hay, что об использовании этого условия
if (s.IndexOf('\\') == s.Length - 1)
где s это ваш путь строка "амр \" даст истинный "АСКУЭ" даст ложные
if (!filename.EndsWith(Path.DirectorySeparatorChar))
filename += Path.DirectorySeparatorChar;
Возможно, вы также захотите проверить на Path.AltDirectorySeparatorChar – Joe
Предположительно вы хотите для добавления разделителя, чтобы впоследствии можно было добавлять имена файлов, используя конкатенацию строк.
В этом случае первоначальный совет Кайла Розендо звучит: подумайте, действительно ли вам нужно это делать. Если вы всегда добавляете имена файлов, используя Path.Combine, вам не нужно заботиться о том, имеет ли ваш путь трейлинг-разделитель.
Если вы все еще хотите это сделать, у вас есть краевой кейс для рассмотрения. Путь «D:» - это допустимый относительный путь, который ссылается на текущий рабочий каталог на диске D :. Добавление разделителя изменит это значение на ссылку на корневой каталог на диске D :. Вы действительно этого хотите? Я предполагаю, что нет. Так что я бы особый случай это так:
public static string AppendSeparator(string path)
{
if (path == null) throw new ArgumentNullException("path");
if (path.Length == 0) return path;
if (path[path.Length - 1] == Path.VolumeSeparatorChar) return path;
if (path[path.Length - 1] == Path.DirectorySeparatorChar) return path;
if (path[path.Length - 1] == Path.AltDirectorySeparatorChar) return path;
return path + Path.DirectorySeparatorChar;
}
Вы можете использовать это следующим образом - последний пример преобразует входной путь к абсолютному пути перед добавлением сепаратора:
path = AppendSeparator(@"C:\SomePath\");
path = AppendSeparator(@"C:\SomePath");
path = AppendSeparator(@"D:");
path = AppendSeparator(Path.GetFullPath("D:"));
- 1. System.IO.Path эквивалент в iOS
- 2. Должен ли `System.IO.Path` быть конкретным?
- 3. все равно, чтобы сделать работу system.io.path с/
- 4. Недопустимый квалификатор при использовании System.IO.path в VBA
- 5. System.IO.Path или эквивалентное использование с путями Unix
- 6. System.IO.Path не содержит определения для GetFiles
- 7. Не можете объявить переменную статического типа «System.IO.Path»
- 8. [System.IO.Path] :: Совместим с переменной myShell как параметр?
- 9. Могу ли я создавать методы расширения для класса System.IO.Path?
- 10. Почему я не могу объявить свойство как System.IO.Path
- 11. Почему System.IO.Path (класс с только статическими элементами) COM видимый?
- 12. Библиотека управления трассировкой .NET
- 13. Можно ли использовать переменную для ссылки на статический класс .NET в powershell?
- 14. Как получить подстроку .net-версии вместо прямого указания строки `net35` в скрипте` Install.ps1`?
- 15. Отсутствует свойство .net 4.5 в коде PortableLibrary
- 16. Не .NET .NET содержит .NET 2.0?
- 17. Истинные имена .NET .NET
- 18. Почему .NET назывался .NET?
- 19. Таблицы данных NET .NET
- 20. .NET ANSI-кодировка .NET
- 21. Разработка .NET .NET WCF
- 22. Конфигурация .NET .NET
- 23. Ошибка .NET Framework 4.0 System.IO отсутствует Класс пути
- 24. .NET
- 25. .NET
- 26. .NET
- 27. .NET
- 28. Fakes and .net Framework 4.6.1 и System
- 29. Где выход .NET Debug.Write() .NET?
- 30. .NET-синтаксис .NET для AST
Помните, что «/» также является допустимым разделителем в Windows (ну, кроме 'cmd.exe' и' command.com'). – Richard