![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: 1 Всего: 1 |
Здравствуйте.
Хотелось бы узнать у тех кто в курсе: неужели до сих пор дотнет не умеет работать с путями длиннее 260 символов? Я когда то с этим столкнулся под дотнетом 2 еще. А на днях опять пришлось. И что? Уже есть дотнет 4 с половиной, космические корабли бороздят просторы Марса, а для длинных путей и дальше надо винапи юзать? Как то это дико... |
|||
|
||||
| Machaon |
|
|||
![]() КаРолЬ АсьКи МуАЛя ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 12.8.2008 Где: М.о. Красногорск Репутация: 3 Всего: 3 |
А что тебе мешает использовать системные каталоги ??
Ну а от него у тебя есть еще 260 символов. |
|||
|
||||
| infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: 1 Всего: 1 |
И чем мне это поможет? По моему как раз наоборот - длина общего пути еще увеличится за счет пути к этой системной папке.
У меня есть структура папок в которой максимальный путь к конечному файлу может достигать и 1000 символов. И где бы она не лежала, хоть прямо на D:\, дотнет кидает ексепшены как только забирается поглубже. |
|||
|
||||
| wester |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 27.2.2009 Репутация: 4 Всего: 13 |
||||
|
||||
| infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: 1 Всего: 1 |
Ну я так и сделал - через винапи работаю. Однако я просто не могу понять, почему? Почему этот пережиток до сих пор тянется из версии в версию?
|
|||
|
||||
| Machaon |
|
|||
![]() КаРолЬ АсьКи МуАЛя ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 12.8.2008 Где: М.о. Красногорск Репутация: 3 Всего: 3 |
Сою ошибку понял.
А если не секрет зачем тебе использовать такие длинные пути ??? Если допустим в имени файла содержится какая то информация то ведь можно написать функцию которая будет преобразовывать её в более короткий вариант, а потом восстанавливать. или если нужно строгое структурирование то используй файл ресурсов там вроде бы длина пути неограниченна. |
|||
|
||||
| infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: 1 Всего: 1 |
В общих чертах суть такая: есть SaaS система для строителей, облегчает работу с документацией. Там создается проект, юзеры закачивают файлы, заполняют формы и все такое. В конечном итоге получается дерево из разделов и данных. Сами понимаете, строительство дома от и до требует кучу документов, дерево выходит огромное. Пока это в вебе проблем нет. Но есть опция: Создать бекап. Вся структура пишется на диск как папки и файлы, потом переносится на DVD диск и идет заказчику по почте. Вот при постройке дерева и возникает проблема. Юзеры вводят огромные имена, а еще норовят вложить сотню папок одна в другую.
|
|||
|
||||
| Machaon |
|
|||
![]() КаРолЬ АсьКи МуАЛя ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 12.8.2008 Где: М.о. Красногорск Репутация: 3 Всего: 3 |
мой совет: при бекапе переименовывай папки присваивая уникальный ID одновременно создавая базу ID с оригинальными названиями,
при восстановлении подменяй ID из базы. |
|||
|
||||
| infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: 1 Всего: 1 |
Да я бы с удовольствием... Только бекап этот для пользователей, из него ничего не восстанавливается. Просто файлы и папки. Так что надо его делать в точном соответствии той виртуальной структуре что в проекте создана. Иначе юзеры пугаются.
|
|||
|
||||
| Machaon |
|
|||
![]() КаРолЬ АсьКи МуАЛя ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 12.8.2008 Где: М.о. Красногорск Репутация: 3 Всего: 3 |
ну вот тебе еще один извращённый вариант:
создаешь к примеру папку "Data" в ней по выше мной написанному методу создаешь структуру папок с ID именами далее сопоставляя id c именами создаешь такую же структуру ярлыков в корне dvd диска задаешь им имена и ссылки, а также по желанию иконки в итоге получаешь: БукваDVD:\Data\ БукваDVD:\ссылка на папку.lnk БукваDVD:\ссылка на файлlnk ..... и тд. Единственный минус при копировании пользователем с носителя куда либо данных ярлыки перестанут работать, но думаю можно написать батничек и уведомить пользователей при переносе бекапа кликнуть на него чтобы поправить ярлычки. (точно не знаю можно ли использовать относительные пути в винде никогда не сталкивался (вот тут говорят можно тыц) но если не получиться то как вариант) В принципе я использовал бы такой вариант если не хотел бы гемороиться с API. |
|||
|
||||
| infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: 1 Всего: 1 |
Увы, юзер должен получить структуру которая точно соответствует виртуальным папкам в его проекте. Папка Data это конечно хорошо, но все равно надо будет создать нечто вроде БукваDVD:\Folder1\Folder2\... А тут опять таки проблема длинного пути.
И еще... Юзеры работают под разными осями. Есть ли вариант кросплатформенных линков? |
|||
|
||||
| iu1005 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 23.10.2007 Репутация: нет Всего: нет |
Я не знаю, как это переносится на DVD, но на дисках можно создавать "жесткие ссылки" (hard links). То есть пользователь может получать доступ к данным по полному пути, а вы - через ту папку, которую сами укажете. Ну а уж если длина достигает 1000 символов, то тут уже придется как минимум через 4 жестких ссылки (4 раза сокращать путь до 248 символов).
|
|||
|
||||
| Machaon |
|
|||
![]() КаРолЬ АсьКи МуАЛя ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 12.8.2008 Где: М.о. Красногорск Репутация: 3 Всего: 3 |
Ну вот смотри используя к примеру 4-х значный id получаем (если использовать только числовой id: 260 / 5 = 52 ) делим на пять потому что незабываем про слеш и того получаем глубину адреса в 52 папки, то беж от корня у нас есть 52 папки.
при таком методе будет возможность использовать всего 9999 папок. если использовать буквенно-цифровой id например (A314) рассчитывая тем же методом получаем 21*999 = 20797 - максимальное число папок при глубине в 52 папки полностью буквенный id то 21 в 4-ой степени равно 194481 папке. 21 - количество букв латинского алфавита. По поводу кросс платформы то можно вместо ссылок использовать HTML + проводник на JS и скрипт подмены ID на Имя и лазить как в обычном проводнике. Возможно для тебя это будет самый "путёвый" вариант. |
|||
|
||||
| infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: 1 Всего: 1 |
А вот на двд это переносится как зип архив. Иными словами я делаю структуру папок, потом архивирую, архив на диск, диск пользователю. И ТЗ именно таково, что файлы и папки должны быть переданы один в один. Так что с айдишками ничего не выйдет. Клиент так хотят ) Собственно уже решили это организационными мерами. Бекапы редко заказывают, за них сервис деньги берет ) А перед генерацией подсчитываем путь. Если задлинный то просим юзера что нибудь переименовать или исключить из списка. Так что проблемы как таковой нет, только вопрос: начешуя этот лимит тянется с первых версий дотнета? |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |