Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Лимит на длину пути к файлу 
V
    Опции темы
infarch
Дата 7.2.2013, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: 1
Всего: 1



Здравствуйте.

Хотелось бы узнать у тех кто в курсе: неужели до сих пор дотнет не умеет работать с путями длиннее 260 символов? Я когда то с этим столкнулся под дотнетом 2 еще. А на днях опять пришлось. И что? Уже есть дотнет 4 с половиной, космические корабли бороздят просторы Марса, а для длинных путей и дальше надо винапи юзать? Как то это дико...
PM MAIL   Вверх
Machaon
Дата 7.2.2013, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



А что тебе мешает использовать системные каталоги ??

Код

Environment.GetFolderPath(Environment.SpecialFolder.каталог);


Ну а от него у тебя есть еще 260 символов.
PM MAIL ICQ Skype   Вверх
infarch
Дата 7.2.2013, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: 1
Всего: 1



И чем мне это поможет? По моему как раз наоборот - длина общего пути еще увеличится за счет пути к этой системной папке.

У меня есть структура папок в которой максимальный путь к конечному файлу может достигать и 1000 символов. И где бы она не лежала, хоть прямо на D:\, дотнет кидает ексепшены как только забирается поглубже.
PM MAIL   Вверх
wester
Дата 7.2.2013, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 4
Всего: 13



PM MAIL   Вверх
infarch
Дата 7.2.2013, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: 1
Всего: 1



Ну я так и сделал - через винапи работаю. Однако я просто не могу понять, почему? Почему этот пережиток до сих пор тянется из версии в версию?
PM MAIL   Вверх
Machaon
Дата 7.2.2013, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



Сою ошибку понял.

А если не секрет зачем тебе использовать такие длинные пути ???

Если допустим в имени файла содержится какая то информация то ведь можно написать функцию которая будет преобразовывать её в более короткий вариант, а потом восстанавливать.

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

PM MAIL ICQ Skype   Вверх
infarch
Дата 8.2.2013, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: 1
Всего: 1



В общих чертах суть такая: есть SaaS система для строителей, облегчает работу с документацией. Там создается проект, юзеры закачивают файлы, заполняют формы и все такое. В конечном итоге получается дерево из разделов и данных. Сами понимаете, строительство дома от и до требует кучу документов, дерево выходит огромное. Пока это в вебе проблем нет. Но есть опция: Создать бекап. Вся структура пишется на диск как папки и файлы, потом переносится на DVD диск и идет заказчику по почте. Вот при постройке дерева и возникает проблема. Юзеры вводят огромные имена, а еще норовят вложить сотню папок одна в другую.
PM MAIL   Вверх
Machaon
Дата 9.2.2013, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



мой совет: при бекапе переименовывай папки присваивая уникальный ID одновременно создавая базу ID с оригинальными названиями, 
при восстановлении подменяй ID из базы.
PM MAIL ICQ Skype   Вверх
infarch
Дата 11.2.2013, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: 1
Всего: 1



Да я бы с удовольствием... Только бекап этот для пользователей, из него ничего не восстанавливается. Просто файлы и папки. Так что надо его делать в точном соответствии той виртуальной структуре что в проекте создана. Иначе юзеры пугаются.
PM MAIL   Вверх
Machaon
Дата 13.2.2013, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



ну вот тебе еще один извращённый вариант:

создаешь к примеру папку "Data"   в ней по выше мной написанному  методу создаешь структуру папок с ID именами

далее сопоставляя id c именами создаешь такую же  структуру ярлыков в корне dvd диска задаешь им имена и ссылки, а также по желанию иконки

в итоге получаешь:

БукваDVD:\Data\
БукваDVD:\ссылка на папку.lnk
БукваDVD:\ссылка на файлlnk
..... и тд.

Единственный минус при копировании пользователем с носителя куда либо данных ярлыки перестанут работать, но думаю можно написать батничек и уведомить пользователей при переносе бекапа кликнуть на него чтобы поправить ярлычки. (точно не знаю можно ли использовать относительные пути в винде никогда не сталкивался (вот тут говорят можно тыц) но если не получиться то как вариант)

В принципе я использовал бы такой вариант если не хотел бы гемороиться с API.

PM MAIL ICQ Skype   Вверх
infarch
Дата 13.2.2013, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: 1
Всего: 1



Увы, юзер должен получить структуру которая точно соответствует виртуальным папкам в его проекте. Папка Data это конечно хорошо, но все равно надо будет создать нечто вроде БукваDVD:\Folder1\Folder2\... А тут опять таки проблема длинного пути.


И еще... Юзеры работают под разными осями. Есть ли вариант кросплатформенных линков? 


PM MAIL   Вверх
iu1005
Дата 14.2.2013, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Я не знаю, как это переносится на DVD, но на дисках можно создавать "жесткие ссылки" (hard links). То есть пользователь может получать доступ к данным по полному пути, а вы - через ту папку, которую сами укажете. Ну а уж если длина достигает 1000 символов, то тут уже придется как минимум через 4 жестких ссылки (4 раза сокращать путь до 248 символов).
PM MAIL   Вверх
Machaon
Дата 14.2.2013, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 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 на Имя и лазить как в обычном проводнике.

Возможно для тебя это будет самый "путёвый" вариант.

PM MAIL ICQ Skype   Вверх
infarch
Дата 14.2.2013, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: 1
Всего: 1



Цитата(iu1005 @  14.2.2013,  00:55 Найти цитируемый пост)
Я не знаю, как это переносится на DVD

А вот на двд это переносится как зип архив. Иными словами я делаю структуру папок, потом архивирую, архив на диск, диск пользователю. И ТЗ именно таково, что файлы и папки должны быть переданы один в один. Так что с айдишками ничего не выйдет. Клиент так хотят ) Собственно уже решили это организационными мерами. Бекапы редко заказывают, за них сервис деньги берет ) А перед генерацией подсчитываем путь. Если задлинный то просим юзера что нибудь переименовать или исключить из списка. Так что проблемы как таковой нет, только вопрос: начешуя этот лимит тянется с первых версий дотнета?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.