Здравствуйте, dmitry_npi, Вы писали:
_>Здравствуйте, samius, Вы писали:
_>Нельзя переместить директорию саму в себя.
Почему же? Где об этом написано? _>А вы чего ожидали? Или это .NET Core на Linux?
Именно этого и ожидал. Нет, это обычный дотнет на Win10.
Здравствуйте, samius, Вы писали:
_>>Нельзя переместить директорию саму в себя. S>Почему же? Где об этом написано?
как ты себе это представляешь? т.е. вот есть сумка, как полжить её в саму себя?
_>>А вы чего ожидали? Или это .NET Core на Linux? S>Именно этого и ожидал. Нет, это обычный дотнет на Win10.
при чём тут дотнет вообще? если ты не можешь создать файл с именем "COM1" — это тоже дотнет виноват?
Здравствуйте, const_volatile, Вы писали:
_>Здравствуйте, samius, Вы писали:
_>>>Нельзя переместить директорию саму в себя. S>>Почему же? Где об этом написано?
_>как ты себе это представляешь? т.е. вот есть сумка, как полжить её в саму себя?
Нормально представляю. Жаль, что не все такое могут себе представить.
Я не прошу сумку положить в себя. Я прошу дать ей новое символическое имя. В том что метод, это выполняющий, называется Move — не моя вина.
_>>>А вы чего ожидали? Или это .NET Core на Linux? S>>Именно этого и ожидал. Нет, это обычный дотнет на Win10.
_>при чём тут дотнет вообще? если ты не можешь создать файл с именем "COM1" — это тоже дотнет виноват?
Я просто ответил, на какой конфигурации это не работает.
Здравствуйте, samius, Вы писали:
_>>>>Нельзя переместить директорию саму в себя. S>>>Почему же? Где об этом написано? _>>как ты себе это представляешь? т.е. вот есть сумка, как полжить её в саму себя? S>Нормально представляю. Жаль, что не все такое могут себе представить. S>Я не прошу сумку положить в себя.
но метод Directory.Move делает именно это. "Moves a file or a directory and its contents to a new location."
S>Я прошу дать ей новое символическое имя.
тогда это называется либо hard link (directory junction в win32), либо symbolic link. и насколько я знаю в дотнете этого можно добиться только через p/invoke.
S>В том что метод, это выполняющий, называется Move — не моя вина.
твоя вина вина в том, что ты не понимаешь разницы между уровнями операционной системы, фреймворка, и приложения и мешаешь всё в одну кучу.
S>>>Именно этого и ожидал. Нет, это обычный дотнет на Win10. _>>при чём тут дотнет вообще? если ты не можешь создать файл с именем "COM1" — это тоже дотнет виноват? S>Я просто ответил, на какой конфигурации это не работает.
ну и? причём тут дотнет, если это os не позволяет так делать? ты можешь то же самое написать на c++ или питоне, с тем же результатом.
Здравствуйте, const_volatile, Вы писали:
_>Здравствуйте, samius, Вы писали:
S>>Я не прошу сумку положить в себя.
_>но метод Directory.Move делает именно это. "Moves a file or a directory and its contents to a new location."
Считай что я прошу передвинуть папку в новое место, чье имя оканчивается большими буквами. В чем проблема?
S>>Я прошу дать ей новое символическое имя.
_>тогда это называется либо hard link (directory junction в win32), либо symbolic link. и насколько я знаю в дотнете этого можно добиться только через p/invoke.
Символическое здесь буквально — состоящее из символов.
S>>В том что метод, это выполняющий, называется Move — не моя вина.
_>твоя вина вина в том, что ты не понимаешь разницы между уровнями операционной системы, фреймворка, и приложения и мешаешь всё в одну кучу.
Возможно. Если это твой ответ, то давай на нем остановимся?
S>>Я просто ответил, на какой конфигурации это не работает.
_>ну и? причём тут дотнет, если это os не позволяет так делать? ты можешь то же самое написать на c++ или питоне, с тем же результатом.
Ты уверен что ос не позволяет так делать и что на C++ и WinAPI будет тот же результат?
Здравствуйте, const_volatile, Вы писали:
_>>>Нельзя переместить директорию саму в себя. S>>Почему же? Где об этом написано?
_>как ты себе это представляешь? т.е. вот есть сумка, как полжить её в саму себя?
Представьте себе это так, что перемещается не сумка, а её проекция на пространство возможных представлений.
_>>>А вы чего ожидали? Или это .NET Core на Linux? S>>Именно этого и ожидал. Нет, это обычный дотнет на Win10.
_>при чём тут дотнет вообще? если ты не можешь создать файл с именем "COM1" — это тоже дотнет виноват?
В случае с директорией виноват именно .net — у winapi нет никаких проблем изменением капитализации имен существующих файлов.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, const_volatile, Вы писали:
_>>>при чём тут дотнет вообще? если ты не можешь создать файл с именем "COM1" — это тоже дотнет виноват? S>>Я просто ответил, на какой конфигурации это не работает.
_>ну и? причём тут дотнет, если это os не позволяет так делать? ты можешь то же самое написать на c++ или питоне, с тем же результатом.
Детский сад. cmd.exe => mkdir \\?\C:\COM1 и наслаждаетесь папкой с именем COM1 в корне диска С
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
_>>>>при чём тут дотнет вообще? если ты не можешь создать файл с именем "COM1" — это тоже дотнет виноват? S>>>Я просто ответил, на какой конфигурации это не работает. _>>ну и? причём тут дотнет, если это os не позволяет так делать? ты можешь то же самое написать на c++ или питоне, с тем же результатом. TK>Детский сад. cmd.exe => mkdir \\?\C:\COM1 и наслаждаетесь папкой с именем COM1 в корне диска С
наводящий вопрос: начинать имя с "\\?\" — это требование дотнета?
Здравствуйте, const_volatile, Вы писали:
TK>>Детский сад. cmd.exe => mkdir \\?\C:\COM1 и наслаждаетесь папкой с именем COM1 в корне диска С _>наводящий вопрос: начинать имя с "\\?\" — это требование дотнета?
Вы файл то хотели создать в каком-то конкретном месте или в сферическом вакууме? Так в сферическом вакууме и TMP создать нельзя — полный путь, так или иначе, надо указывать в любом случае.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>>>Детский сад. cmd.exe => mkdir \\?\C:\COM1 и наслаждаетесь папкой с именем COM1 в корне диска С _>>наводящий вопрос: начинать имя с "\\?\" — это требование дотнета? TK>Вы файл то хотели создать в каком-то конкретном месте или в сферическом вакууме?
напомню, в квоте, которую ты потёр, был мой вопрос — "причём тут дотнет?". он до сих пор в силе.
TK>Так в сферическом вакууме и TMP создать нельзя — полный путь, так или иначе, надо указывать в любом случае.
т.е. CreateDirectory ("tmp", NULL) вернёт ошибку? это в детском саде такому учат?
Здравствуйте, const_volatile, Вы писали:
_>напомню, в квоте, которую ты потёр, был мой вопрос — "причём тут дотнет?". он до сих пор в силе.
Невозможность создать/переименовать файл это проблемы .net — он тут при всем
TK>>Так в сферическом вакууме и TMP создать нельзя — полный путь, так или иначе, надо указывать в любом случае.
_>т.е. CreateDirectory ("tmp", NULL) вернёт ошибку? это в детском саде такому учат?
не гадить где по пало? во многих учат финальный путь то какой будет? или до таких мелочей не опускаетесь?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, const_volatile, Вы писали:
_>>напомню, в квоте, которую ты потёр, был мой вопрос — "причём тут дотнет?". он до сих пор в силе.
TK>Невозможность создать/переименовать файл это проблемы .net — он тут при всем
Конкретно с файлом подобный трюк через дотнет работает без проблем. Т.е. File.Move(string, string) позволяет менять в имени только лишь регистр.
Здравствуйте, Sinatr, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>Оно?
Да, все признаки. Но я не списывал, если речь об этом.
S>Было бы хорошо в спойлер засовывать ответ...
Хотелось бы его выяснить сначала. А то мне кажется что козлит дотнет. А выше было мнение что виноват я.
Если память не изменяет, то Проводник Win9x имел ту же проблему: если хочешь изменить char case папки, то сначала надо было изменить имя на другое, и только затем переименовывать обратно, но уже с нужным char case.
Здравствуйте, samius, Вы писали:
S>>Оно? S>Да, все признаки. Но я не списывал, если речь об этом.
Речь о решении проблемы. Переименуйте папку сначала в "старое имя"+"123", а уже потом все получится.
S>>Было бы хорошо в спойлер засовывать ответ... S>Хотелось бы его выяснить сначала. А то мне кажется что козлит дотнет. А выше было мнение что виноват я.
Было высказано предположение (см. ту же ссылку), что это WinAPI. Хотите найти виноватого (хотя важно ли это?) — проверьте.
Здравствуйте, const_volatile, Вы писали:
_>при чём тут дотнет вообще? если ты не можешь создать файл с именем "COM1" — это тоже дотнет виноват?
Господа, стыд мне, но я не знаю, что за история стоит за невозможность создать папку COM1 на диске с. Не просветите?
УПД. Нашел, благодарю:
Попробуйте, создать в проводнике папку или файл с именем "СОМ1", сделать это не получится. ОС Windows зарезервировала имена от СОМ1 до СОМ9 для работы с СОМ-портами.
Здравствуйте, Mr.Delphist, Вы писали:
MD>Здравствуйте, samius, Вы писали:
MD>Если память не изменяет, то Проводник Win9x имел ту же проблему: если хочешь изменить char case папки, то сначала надо было изменить имя на другое, и только затем переименовывать обратно, но уже с нужным char case.
Что-то тако когда-то было, но к текущей ситуации вряд ли имеет отношение. Win7 позволяет переименовывать по месту, а что было раньше — нет ни желания, ни возможности проверить.
Здравствуйте, Sinatr, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>>>Оно? S>>Да, все признаки. Но я не списывал, если речь об этом.
S>Речь о решении проблемы. Переименуйте папку сначала в "старое имя"+"123", а уже потом все получится.
Конкретно в моем случае не пойдет. Речь идет о тесте для драйвера файловой системы, а он должен позволять in-place переименование.
Заюзал WinAPI. Проблемы как таковой нет, но есть осадок от того что не назван виновник.
S>>>Было бы хорошо в спойлер засовывать ответ... S>>Хотелось бы его выяснить сначала. А то мне кажется что козлит дотнет. А выше было мнение что виноват я.
S>Было высказано предположение (см. ту же ссылку), что это WinAPI. Хотите найти виноватого (хотя важно ли это?) — проверьте.
Через WinAPI работает как часы.
Здравствуйте, Sharov, Вы писали:
S>Господа, стыд мне, но я не знаю, что за история стоит за невозможность создать папку COM1 на диске с. Не просветите?
Мультикарта, косые комЫ, LPT, гейм-порт вообще на звуковой карточке... Косички от VIA не подходили к другим матерям и наоборот, хотя форм-фактор физически одинаковый... НостальжЫ!
Здравствуйте, Mr.Delphist, Вы писали:
MD>Здравствуйте, Sharov, Вы писали:
S>>Господа, стыд мне, но я не знаю, что за история стоит за невозможность создать папку COM1 на диске с. Не просветите?
MD>http://www.softelectro.ru/rs232prog.html
MD>Мультикарта, косые комЫ, LPT, гейм-порт вообще на звуковой карточке... Косички от VIA не подходили к другим матерям и наоборот, хотя форм-фактор физически одинаковый... НостальжЫ!
MD>Вот чутка тёплой ламповости: MD>https://www.youtube.com/watch?v=yjeVEJqzyI0
Я в курсе про serial порты, но как это связано с папкой на диске?????
УПД. Нашел:
Попробуйте, создать в проводнике папку или файл с именем "СОМ1", сделать это не получится. ОС Windows зарезервировала имена от СОМ1 до СОМ9 для работы с СОМ-портами.
S>Попробуйте, создать в проводнике папку или файл с именем "СОМ1", сделать это не получится. ОС Windows зарезервировала имена от СОМ1 до СОМ9 для работы с СОМ-портами.
Здравствуйте, samius, Вы писали:
S>>Речь о решении проблемы. Переименуйте папку сначала в "старое имя"+"123", а уже потом все получится. S>Конкретно в моем случае не пойдет. Речь идет о тесте для драйвера файловой системы, а он должен позволять in-place переименование.
Вам виднее, мне фраза "тест драйвера файловой системы" не объясняет, почему решение с двойным переименованием не подходит.
Добавьте проверку в стиле "oldName.ToLower() == newName.ToLower()" где этот сценарий отрабатывается особо или поместите вызов в try/catch(IOException) с уведомлением пользователя о невозможности выполнить действие (переименовывает ведь пользователь?).
Если через winapi все работает и портирования не планируется, то оставьте с ним (можно пометить как HACK и забить )
Здравствуйте, Sinatr, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>>>Речь о решении проблемы. Переименуйте папку сначала в "старое имя"+"123", а уже потом все получится. S>>Конкретно в моем случае не пойдет. Речь идет о тесте для драйвера файловой системы, а он должен позволять in-place переименование.
S>Вам виднее, мне фраза "тест драйвера файловой системы" не объясняет, почему решение с двойным переименованием не подходит.
Потому что тест должен проверить, как будет вести себя драйвер в случае переименования tmp->TMP.
S>Добавьте проверку в стиле "oldName.ToLower() == newName.ToLower()" где этот сценарий отрабатывается особо или поместите вызов в try/catch(IOException) с уведомлением пользователя о невозможности выполнить действие (переименовывает ведь пользователь?).
Переименовывает тест.
S>Если через winapi все работает и портирования не планируется, то оставьте с ним (можно пометить как HACK и забить )
Спасибо, кэп. Но я не спрашивал, как мне поступить.
Здравствуйте, Mr.Delphist, Вы писали:
MD>Мультикарта, косые комЫ, LPT, гейм-порт вообще на звуковой карточке... Косички от VIA не подходили к другим матерям и наоборот, хотя форм-фактор физически одинаковый... НостальжЫ!
Ой! Я вчера ставил Windows Server 2003 с подсовыванием установщику драйвера raid-контроллера на 3.5" дискетке. Еле живую дискетку отыскали.
Здравствуйте, Mystic Artifact, Вы писали:
MA>1. NTFS раздел вполне может быть регистрозависимым.
+1. Про .net core и lin даже не буду. Но поскольку задокументировано — всё, фича.
MA>2. А в File.Move зачем проверка на exists? Неужто система сама не разберётся и не отрапортует об ошибке?
Ну так если это фича, то о чем issue? Может быть следует попросить добавить проверку для файлов?
S>P.S. На участие в серии "Минутка WTF" не тянет, квеста нет
Как же нет, если даже ты поменял мнение с бага на фичу?
Здравствуйте, samius, Вы писали:
S>>P.S. На участие в серии "Минутка WTF" не тянет, квеста нет S>Как же нет, если даже ты поменял мнение с бага на фичу?
Ну, все посты в серии "Минутка WTF" не содержат ответа в стартовом сообщении
И не поменял, а криво записал. Читай как "не_баг_а_фича".
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>>>P.S. На участие в серии "Минутка WTF" не тянет, квеста нет S>>Как же нет, если даже ты поменял мнение с бага на фичу?
S>Ну, все посты в серии "Минутка WTF" не содержат ответа в стартовом сообщении
И что за ответ в стартовом сообщении?
S>И не поменял, а криво записал. Читай как "не_баг_а_фича".
А зачем предлагал issue создать и приводил отлчия в реализации File.Move?
S>>Ну, все посты в серии "Минутка WTF" не содержат ответа в стартовом сообщении S>И что за ответ в стартовом сообщении?
Каждый вопрос в серии — загадка в духе "что тут не так?". А у тебя сразу вся интрига раскрыта
S>>И не поменял, а криво записал. Читай как "не_баг_а_фича". S>А зачем предлагал issue создать и приводил отлчия в реализации File.Move?
Ну так я и сейчас предлагаю. Есть шанс, что поведение поменяют, особенно с учётом lin.
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>>И что за ответ в стартовом сообщении? S>Каждый вопрос в серии — загадка в духе "что тут не так?". А у тебя сразу вся интрига раскрыта
Это вопрос проницательности. Я еще не понял, в чем интрига.
S>>А зачем предлагал issue создать и приводил отлчия в реализации File.Move? S>Ну так я и сейчас предлагаю. Есть шанс, что поведение поменяют, особенно с учётом lin.
Есть шанс что его поменяют для файла, т.к. смысл такого ограничения я все еще не понимаю.