28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173

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

20.06.2014, 17:07. Показов 28019. Ответов 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
3390 / 2276 / 388
Регистрация: 14.08.2018
Сообщений: 7,696
Записей в блоге: 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
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
15.08.2024, 17:07
Цитата Сообщение от titan4ik Посмотреть сообщение
Чтобы уже "не путаться" при переходах между windows и линукс.
А нечего путаться - бэкслэш и форвард слэш - это разные символы.
0
Заблокирован
15.08.2024, 17:10
Цитата Сообщение от IamRain Посмотреть сообщение
А нечего путаться - бэкслэш и форвард слэш - это разные символы.
Зачем использовать разные символы, если можно использовать одинаковые? Это различие возникло давно по историческим причинам. Но уже много воды утекло. Может быть уже можно в windows приложении забыть про бэкслэш при указании путей?
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
15.08.2024, 17:20
titan4ik, как выше заметили, Path-класс сам определяет SeparatorChar в системе и позволяет не думать о различиях.
А при работе вручную лично я не вижу проблемы, всего два разных символа - не десять же.
0
Заблокирован
15.08.2024, 18:22
Хорошо, я по-другому спрошу. Если буду прямой слэш использовать в приложении windows, реально проблемы будут?
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 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
3390 / 2276 / 388
Регистрация: 14.08.2018
Сообщений: 7,696
Записей в блоге: 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
4695 / 2702 / 735
Регистрация: 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
3390 / 2276 / 388
Регистрация: 14.08.2018
Сообщений: 7,696
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru