2013-11-21 41 views
2

我有一個appdata下的本地存儲工作的應用程序,從網上下載新內容並在本地顯示。我發現具有較長文件名的內容會引發路徑太長的異常。C#Windows RT文件名太長

這是非常糟糕的,因爲我無法控制內容中文件名的層級和長度。有沒有一個快捷方式或短名稱(類似於8.3),我可以使用它來確保我的文件路徑長度的百分比不會丟失?即C:\用戶{用戶} \應用程序數據\本地\ {包APPID} \ LocalState ...

在我來說,我有一個較短的名稱,目前仍是基本路徑佔用了101個字符的蝙蝠

+0

您可以創建一個短文件名的映射,並在請求更長的文件名時使用這些映射嗎? – WiredPrairie

+0

我找不到使用StorageFolder或StorageFile API的方法。 – 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:\某些256個字符的路徑字符串」 其中「」表示當前系統代碼頁的不可見的終止空字符。 (字符<>在這裏用於 視覺清晰度,並不能有效的路徑字符串的一部分。)轉換

Note文件I /在Windows API轉換O功能「/」的

爲「\」爲部分 將名稱命名爲NT樣式名稱,除非使用前綴 「\\?\」前綴,如以下各節中所述。

Windows API有很多功能,它們的Unicode版本也有 允許最大總長度爲 32,767個字符的擴展長度路徑。此類路徑由用反斜槓分隔的組件 組成,每個組件由GetVolumeInformation 函數(此值通常爲255個字符)的 lpMaximumComponentLength參數返回的值。要指定 擴展長度路徑,請使用「\\?\」前綴。例如,「\\?\ D:\ long 長路徑」。

不確定「\\?\」在RT下有效。通常在Windows下使用真正長的路徑名稱並不是一個特別好的主意(個人而言,我不認爲這是一個好主意)。也許你可以重新調整結構來縮小你的路徑長度嗎?

+0

不幸的是,Microsoft在從網絡下載更新內容時強制您使用本地存儲。 – Mike