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

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

20.06.2014, 17:07. Показов 27945. Ответов 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
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
21.06.2014, 02:13
Студворк — интернет-сервис помощи студентам
Не бажище, а MS Specific:

Parsing C++ Command-Line Arguments (MSDN)
http://msdn.microsoft.com/en-u... 5ykft.aspx
...
A double quotation mark preceded by a backslash (\") is interpreted as a literal double quotation mark character (").
У них там целый свод правил
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
21.06.2014, 03:09
Убежденный, угу, я уже понял:
http://stackoverflow.com/quest... 0#24336710

The backslash acts as an escape operator when it is applicable. \D is not an escape code, so bash seems to be passing it through just fine. \" is an escape code however. In order to achieve the output you desire you should write:

C#
1
Program.exe "C:\\Dir\\"
так что так
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
21.06.2014, 03:21
Why is the DOS path character "\"?
1
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
21.06.2014, 08:33  [ТС]
В принципе, я даже не подозревал об этой ошибке, пока пользователь не пожаловался.

Добавлено через 2 минуты
Из MSDN:

A double quotation mark preceded by a backslash (\") is interpreted as a literal double quotation mark character (").
Двойная кавычка, перед которой стоит бекслеш, интерпретируется как литеральный (т.е. не управляющий) символ двойной кавычки.

Backslashes are interpreted literally, unless they immediately precede a double quotation mark.
Бекслеши интерпретируются как литералы кроме случаем, когда после них стоит двойная кавычка.
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
21.06.2014, 09:25
Suppir, ну если описанно в документации, то это не ошибка, а фича
0
Заблокирован
15.08.2024, 15:49
Цитата Сообщение от kolorotur Посмотреть сообщение
Конечно. В среде Windows используется символ "\" для разделения директорий.
Его и используйте.
Иногда среда принимает и "/", но не всегда, потому лучше быть постоянным и использовать "\".
Не рекомендуется поднимать старые темы, но в данном случае мне представляется уместным.
А что можно сказать на сегодняшний день?
Какой символ для разделителя директорий использовать сегодня в приложении windows?
Ясно, что "\" будет нормально работать. Но если так же нормально будет работать и "/", то может быть пора на него переходить? Чтобы уже "не путаться" при переходах между windows и линукс. Ведь если нет смысла использовать специальный символ "\" (работает только в windows), то лучше использовать универсальный "/" (работает и в windows, и в линукс, и в веб).
Это я про принцип экономии мышления.
Что скажете?
0
 Аватар для Andrey-MSK
3375 / 2261 / 388
Регистрация: 14.08.2018
Сообщений: 7,666
Записей в блоге: 4
15.08.2024, 15:58
Цитата Сообщение от titan4ik Посмотреть сообщение
Чтобы уже "не путаться" при переходах между windows и линукс.
C#
1
Path.Combine()
и не нужно париться...
1
Заблокирован
15.08.2024, 16:32
Спасибо, Andrey-MSK,
а если вручную то как-то так можно:
C#
1
2
separator = Path.DirectorySeparatorChar;
path = $"{separator}users{separator}user1{separator}";
Это вот тут рекомендуется.
Но интересно услышать и прямой ответ на поставленный вопрос.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,236
15.08.2024, 17:07
Цитата Сообщение от titan4ik Посмотреть сообщение
Чтобы уже "не путаться" при переходах между windows и линукс.
А нечего путаться - бэкслэш и форвард слэш - это разные символы.
0
Заблокирован
15.08.2024, 17:10
Цитата Сообщение от IamRain Посмотреть сообщение
А нечего путаться - бэкслэш и форвард слэш - это разные символы.
Зачем использовать разные символы, если можно использовать одинаковые? Это различие возникло давно по историческим причинам. Но уже много воды утекло. Может быть уже можно в windows приложении забыть про бэкслэш при указании путей?
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,236
15.08.2024, 17:20
titan4ik, как выше заметили, Path-класс сам определяет SeparatorChar в системе и позволяет не думать о различиях.
А при работе вручную лично я не вижу проблемы, всего два разных символа - не десять же.
0
Заблокирован
15.08.2024, 18:22
Хорошо, я по-другому спрошу. Если буду прямой слэш использовать в приложении windows, реально проблемы будут?
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,236
15.08.2024, 18:26
Цитата Сообщение от titan4ik Посмотреть сообщение
Если буду прямой слэш использовать в приложении windows, реально проблемы будут?
Это можно самостоятельно проверить.
0
Заблокирован
15.08.2024, 21:12
Цитата Сообщение от IamRain Посмотреть сообщение
Это можно самостоятельно проверить.
IamRain, ну не знаете так и скажите. Зачем это дрочилово бессмысленное?

Добавлено через 7 минут
Известно, что прямой флэш будет работать.
Но неизвестно есть ли шанс нарваться на проблему при этом. Поэтому если не знаешь где эту проблему искать, то ничего не проверишь. И насколько эта проблема вероятна. Может быть в настоящее время почти невероятна. Я этого не знаю. И именно это и хотел узнать.

Добавлено через 2 минуты
Тут в этой же теме написано (но давно написано)
Указание путей к файлу через слеш или бекслеш - есть ли разница

Добавлено через 6 минут
А сейчас вот что написано
Канонизация разделителей
Все символы косой черты (/) преобразуются в стандартные разделители Windows, то есть символы обратной косой черты (\).
https://learn.microsoft.com/ru... separators
Я и хочу понять. Можно прямой флэш применять или нет у тех у кого в этом опыт есть. Написанному же верить нельзя. Тем боле, что там есть оговорка
Практически все передаваемые в API Windows пути нормализуются.
"Практически все" и "все" это не одно и то же. Насколько? Я не знаю.
0
 Аватар для Andrey-MSK
3375 / 2261 / 388
Регистрация: 14.08.2018
Сообщений: 7,666
Записей в блоге: 4
16.08.2024, 08:26
Цитата Сообщение от titan4ik Посмотреть сообщение
"Практически все" и "все" это не одно и то же. Насколько? Я не знаю.
Что мешает проверить?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.IO;
 
namespace ConsoleApp11
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string pathWin = @"C:\Users\User\Documents";
            string pathNix = @"C:/Users/User/Documents";
 
            string[] filesWin = Directory.GetFiles(pathWin, "*.*");
            Console.WriteLine(filesWin.Length);
 
            string[] filesNix = Directory.GetFiles(pathNix, "*.*");
            Console.WriteLine(filesNix.Length);
        }
    }
}
0
Заблокирован
16.08.2024, 08:51
Andrey-MSK, это не проверка. Это наверняка сработает нормально. Почти наверняка)
Сработало конечно. Но это частный случай.
Ладно, в общем мнение понятно - нефиг умничать. Раз в виндовс надо обратный ставить - таки и ставьте обратный, если не будет особой причины изменить эту практику.

Добавлено через 2 минуты
А именно - несмотря на то, что
Цитата Сообщение от titan4ik Посмотреть сообщение
Все символы косой черты (/) преобразуются в стандартные разделители Windows, то есть символы обратной косой черты (\).
практики перехода на прямой флэш в приложениях Windows на данный момент не сложилось.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,236
16.08.2024, 09:02
titan4ik, вы наверное, когда на улицу выходите, всегда с зонтом?) В солнечный день - защита от ультрафиолета, в пасмурный - от потенциального дождя. Проблемы надо решать по мере их поступления.
0
Заблокирован
16.08.2024, 09:14
IamRain, это не проблема. И я не проблему решаю. Я интересуюсь у профессионалов их мнением.
Казалось бы, увидев в оф док такую фразу
Цитата Сообщение от titan4ik Посмотреть сообщение
Все символы косой черты (/) преобразуются в стандартные разделители Windows, то есть символы обратной косой черты (\).
можно просто перестать использовать обратный слэш (за исключением случаев, когда важна обратная совместимость какая-то специфическая), но этого не случилось. Это факт. Причина до конца не понятна.
P.S.
Вероятно, она в том, что "нет смысла что-то менять, если и так работает" (обратный слэш работает) - ведь это изменение теоретически может создать проблему, как и любое другое изменение в подходах (сознании), договорённостях, правилах. Не знаю. Вам виднее.
0
 Аватар для Andrey-MSK
3375 / 2261 / 388
Регистрация: 14.08.2018
Сообщений: 7,666
Записей в блоге: 4
16.08.2024, 09:20
Цитата Сообщение от titan4ik Посмотреть сообщение
это не проверка.
А что это? Читает оба слэша как надо...

Просто таким способом в NIX никто писать не будет, если нужно сделать реально кроссплатформу. А будут использовать методы языка для определения ОС и уже на основе них формировать пути. Вы ведь в курсе что в NIX нет C:\, D:\ и т.д., а всё пляшет от корня /...
0
Заблокирован
16.08.2024, 09:54
Тему можно считать исчерпанной.
Поясню. Я не столько о кроссплатформенности (я в этом мало смыслю), сколько о том, что прямой флэш сейчас уже вроде бы можно было бы (?) применять и в виндовс в качестве нормы, как рекомендуемый разделитель. Но нет - этого не случилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.08.2024, 09:54

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru