Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/134: Рейтинг темы: голосов - 134, средняя оценка - 4.93
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173

Указание путей к файлу через слеш или бекслеш - есть ли разница

20.06.2014, 17:07. Показов 28119. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Подскажите, есть ли хоть какая-то разница при указании путей к файлам через "/" или "\" в c#?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.06.2014, 17:07
Ответы с готовыми решениями:

Есть значения, нужно два ответа. Через слеш
Есть значения, нужно два ответа. Ни как не могу обойти "слеши" формулой. Новичек. Ответы: 1. Сумма первый значений перед \ 2. Сумма...

Указание путей в Spring
Подскажите, как устанавливать пути для файлов в спринге? Мне нужно вызвать код File file = new File("WEB-INF/pdf/test.pdf");...

Теряется последний обратный слеш из пути к файлу
Вроде бы простой скрипт отрезает кусок видео и сохраняет этот кусок, например, в d:\Video\segment\kino.avi. Обычно нормально работает, но...

51
2410 / 1942 / 764
Регистрация: 27.07.2012
Сообщений: 5,580
16.08.2024, 10:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от titan4ik Посмотреть сообщение
о том, что прямой флэш сейчас уже вроде бы можно было бы (?) применять и в виндовс в качестве нормы, как рекомендуемый разделитель. Но нет - этого не случилось.
Не случилось где? В Microsoft?
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,750
Записей в блоге: 4
16.08.2024, 10:16
Цитата Сообщение от titan4ik Посмотреть сообщение
Но нет - этого не случилось.
Кто-то мешает?
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Windows PowerShell
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
 
Попробуйте новую кроссплатформенную оболочку PowerShell (https://aka.ms/pscore6)
 
PS C:\Users\User> cd C:/Users/User/Documents
PS C:\Users\User\Documents> ls
 
 
    Каталог: C:\Users\User\Documents
 
 
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        20.03.2024     14:36                00 - DB Client
d-----        21.07.2022      9:23                00 - HR Client
d-----        03.07.2023     11:15                000 - Всякое
d-----        09.08.2024     13:52                Books
1
Заблокирован
16.08.2024, 10:17
Цитата Сообщение от John Prick Посмотреть сообщение
Не случилось где? В Microsoft?
в c#
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,750
Записей в блоге: 4
16.08.2024, 10:22
Цитата Сообщение от titan4ik Посмотреть сообщение
в c#
Чего это? Вы же сами убедились что оба варианта работают?

И мало того, в CMD тоже всё работает как надо
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Microsoft Windows [Version 10.0.19045.4780]
(c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
 
C:\Users\User>cd C:/Users/User/Documents
 
C:\Users\User\Documents>dir
 Том в устройстве C имеет метку Windows
 Серийный номер тома: 7835-7B7D
 
 Содержимое папки C:\Users\User\Documents
 
24.07.2024  17:40    <DIR>          .
24.07.2024  17:40    <DIR>          ..
20.03.2024  14:36    <DIR>          00 - DB Client
21.07.2022  09:23    <DIR>          00 - HR Client
03.07.2023  11:15    <DIR>          000 - Всякое
09.08.2024  13:52    <DIR>          Books
0
Заблокирован
16.08.2024, 10:31
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Чего это? Вы же сами убедились что оба варианта работают?
И мало того, в CMD тоже всё работает как надо
Andrey-MSK, ёпересетэ) Ведь, если кто-то будет писать явно пути в коде c#, то будет писать с обратным слэшем. Если кто-то книгу будет писать по c# - то же самое будет.
Это я спрашиваю что мешает перейти всем на прямой слэш. Это я спрашиваю

Добавлено через 1 минуту
Уже не спрашиваю. Всё. Я сдался) Тема закрыта)
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,750
Записей в блоге: 4
16.08.2024, 10:31
titan4ik, Примите за железобетонный довод - в Windows правильно писать через \, так уж исторически сложилось, в NIX - /. Всё
1
Заблокирован
16.08.2024, 10:37
Andrey-MSK, ОК.
Спасибо, что со мной, дурнем, общаетесь)
0
HF
 Аватар для HF
1340 / 924 / 202
Регистрация: 09.09.2011
Сообщений: 2,748
Записей в блоге: 2
16.08.2024, 10:44
Лучший ответ Сообщение было отмечено titan4ik как решение

Решение

Не стал писать в соседнюю тему Слеш в конце пути к каталогу.
Свои 5 копеек запихну.

Так как у нас проект мультиплатформенный, то мы активно подгоняли работу с файлами. И опыт показал что:

- если использовать всегда "/" в путях, то это идеально работает везде.
Но сложность заключается только в настройках или взаимодействии с пользователем. То есть, странно когда пользователь Windows версии вводит путь не в его знакомом виде. Или же, пользователь ввёл путь, а после сохранения видит что слеши изменились на обратные. Это приводит только к недоумению и непониманию.
Поэтому конвертации слешей мы делаем "за кулисами" при фактическом использовании. А наружу точит то что ввёл пользователь.

- Path.Combine работает тупо и ничего не проверяет
И не нужно. Его использование нужно только для того чтобы собрать путь с учётом платформо-зависимых слешей. А так же он отсекает некоторые повторы (например /s//z => /s/z ).

- про последний символ в пути
Не нужно думать или ставить специально слеш для каталога. Последнее имя в пути - является ключевым для обработки. Да, для нас визуально понятнее чтобы там стоял какой-то "маркер", типа "слеша". Но если у вас файл без расширения, то вся эта схема ломается.
Поэтому на мой взгляд лучше точно понимать что вы делаете, а не гадать. Что за ситуация когда мы должны определить - файл это или папка? Ну только если например у пользователя запросили каталог для сохранения, а он ввёл путь к файлу (если наоборот, к файлу, то там простая проверка File.Exists решает проблему моментально).
Во всех случаях код kotelok из темы Отличить файл от каталога отлично подходит.
1
Заблокирован
16.08.2024, 11:08
HF, спасибо!

Добавлено через 20 минут
Цитата Сообщение от HF Посмотреть сообщение
Поэтому конвертации слешей мы делаем "за кулисами" при фактическом использовании. А наружу точит то что ввёл пользователь.
Понял, что не понял - в самом коде (внутри кода) вы используете прямые слеши?
0
HF
 Аватар для HF
1340 / 924 / 202
Регистрация: 09.09.2011
Сообщений: 2,748
Записей в блоге: 2
16.08.2024, 11:16
Цитата Сообщение от titan4ik Посмотреть сообщение
Понял, что не понял - в самом коде (внутри кода) вы используете прямые слеши?
Что такое "прямой слеш"? Есть "слеш" (интернет символ "/") и "обратный слеш" (для спецсимволов который, и который в виндовых путях).

Мы храним то что вводится (как в конфиге написали, как пользователь ввёл). А уже перед использованием я тупо прогоняю через конвертер, который избавляет меня от всех мне известных вероятных проблем. По сути я пересобираю путь под платформу. Ну разумеется это делается не миллион раз в секунду, там бы я придумал другой способ. Да и функция эта быстрая.
Проверка существования каталога/файла - это работа сервиса перед уже непосредственно использованием. Поэтому тоже вроде бы диск не "тормошим" часто.
1
Заблокирован
16.08.2024, 11:54
HF, а, ну то есть вы вообще не используете явно заданные пути в коде. Используете только введенные пользователями пути (переменные со значением пути), которые потом конвертируете под конкретную платформу. Надо полагать, под windows после конвертации будут обратные слеши.
0
HF
 Аватар для HF
1340 / 924 / 202
Регистрация: 09.09.2011
Сообщений: 2,748
Записей в блоге: 2
16.08.2024, 12:09
Цитата Сообщение от titan4ik Посмотреть сообщение
ну то есть вы вообще не используете явно заданные пути в коде. Используете только введенные пользователями пути (переменные со значением пути), которые потом конвертируете под конкретную платформу. Надо полагать, под windows после конвертации будут обратные слеши.
нет.

Например, есть отчёты из шаблонов. Путь до них составной. Есть общая папка с ресурсами; есть относительный путь до конкретного отчёта-шаблона; и может быть имя самого файла шаблона.
Общая папка может быть законфигурирована извне (файл конфигурации). Тут считаем что админ напишет корректный путь.
А например относительный путь был раньше виндовый и это константа в коде. Чтобы не городить проверки и инициализации этой строки, то мы просто используем как есть, на любой платформе.
В итоге, я раньше получал вот такой результат: /var/usr/myapp/Reports\Energo\Electro\template.xls
Ничего мы тут не показываем никому. Всё что нужно - пересобрать путь и использовать. Если кто-то и увидит путь с обратными слешами - то это будет в логах с пойманной ошибкой.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.08.2024, 12:09

указание пути к файлу
Столкнулся с проблемой указания пути к файлу. Написал функцию. Вызываю её так: readFile(&quot;test.txt&quot;,stran,&amp;n); в моем...

Указание пути к файлу
все о том же grep. для того, чтобы пользователь мог найти что-то в файле, по шаблону он должен ввести ключ(слово, которое должно...

Указание пути к файлу вручную
Как зделать так что б пользователь сам задавал путь к файлу с которого надо читать данные? Например...

Неявное указание пути к файлу
Здравствуйте! Проблема: нужно неявное указание пути к файлу в FileStream FileStream filestream = new...

есть ли разница ru или org?
почему люди дают больше денег за ru чем за org(за ссылки)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
52
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru