2013-11-21 5 views
2

У меня есть приложение, которое работает с локальным хранилищем под appdata для загрузки нового контента из Интернета и отображения его локально. Я нахожу, что контент с более длинными именами файлов бросает слишком длинное исключение.C# Слишком длинное имя файла Windows RT

Это очень плохо, поскольку я не могу контролировать уровень иерархии и длину имен файлов в контенте. Есть ли ярлык или короткое имя (похожее на 8.3), которое я могу использовать, чтобы гарантировать, что я не теряю большой процент длины моего файла? т.е. C: \ Users {User} \ AppData \ Local \ Packages {AppID} \ LocalState ...

В моем случае у меня есть более короткое название и по-прежнему базовый путь занимает 101 символов с летучей мыши

+0

Не могли бы вы создать карту коротких имен файлов и использовать их вместо этого, когда было запрошено более длинное имя файла? – WiredPrairie

+0

Я не могу найти способ сделать это, используя API StorageFolder или StorageFile. – Mike

+0

Вам нужно будет сохранить карту. Это не будет частью API. – WiredPrairie

ответ

1

Дорожки в окнах, как правило, ограничивается 260 символами:

от http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

Максимальная длина пути Ограничение

в Windows API, (с некоторыми исключениями, обсуждавшихся в го e, следующий за параграфами), максимальная длина для пути - MAX_PATH, которая равна , определяемая как 260 символов. Локальный путь структурирован в следующем порядке: букву диска, двоеточие, обратную косую черту, компоненты имени, разделенные обратными косыми чертами и завершающий нулевой символ. Например, максимальный путь на диске D является «D: \ some string длиной 256 символов» где «» представляет невидимый завершающий нулевой символ для текущей кодовой страницы системы. (Символы <> здесь используется для визуальной ясности и не может быть частью правильной строки пути.)

I

Примечания Файла/функция вывода в API Преобразования Windows «/» до «\» как часть преобразования имя для имени NT-стиля, за исключением случаев использования префикса «\\? \», как описано в следующих разделах.

В Windows API есть много функций, которые также имеют версии Unicode до , разрешают длину расширенной длины для максимальной общей длины пути 32 767 символов. Этот тип пути состоит из компонентов , разделенных обратными косыми чертами, каждый до значения, возвращаемого в параметре lpMaximumComponentLength функции GetVolumeInformation (это значение обычно составляет 255 символов). Чтобы указать путь расширенной длины , используйте префикс «\\? \». Например, «\\? \ D: \ very длинный путь».

Не уверен, что «\\? \» Работает под RT. Как правило, использование очень длинных имен путей под окнами - не очень хорошая идея (лично я не думаю, что это хорошая идея вообще). Возможно, вы можете реструктурировать, чтобы уменьшить длину пути, сглаживая структуру?

+0

Несчастливой частью является то, что Microsoft заставляет вас использовать локальное хранилище при загрузке обновленного контента из Интернета. – Mike

Смежные вопросы