2011-01-12 2 views
6

可能性の重複:
Why does the 260 character path length limit exist in Windows?C#:完全修飾パスの260文字制限を回避する方法はありますか?

私はこの問題を回避する方法を把握しようとしているが、完全修飾パス制限260文字を恐ろしいと同時に、私はなぜ地獄の不思議始まるパスの制限はありますか?私はいくつかの人々に260が "たくさん"あるようだが、本当に私はこの問題に遭遇してからではないことを知っている。

基本的には:
なぜ文字数制限が必要ですか?
どのように周囲を回りますか?

+0

OS制限です。 –

+0

Twitterのことを聞かれましたか?それは140文字の制限があります。これが、BitlyのようなURL短縮機能に関心が高まっている理由の1つです。 – DOK

答えて

11

パスの "DOSモード"から抜け出すには、UNC接頭辞\\?\を使用してください。 UNCパスの最大長は32k文字です。ここ

さらに詳しい情報:http://msdn.microsoft.com/en-us/library/aa365247.aspx

+1

"\\?\"はそれをUNCにしません、\\?\はUNCをサポートします。 –

+0

各コンポーネント(\ ... \)には 'GetVolumeInformation'関数からの' lpMaximumComponentLength'値の制限があります。 – n00dles

+0

このコンポーネントの制限を回避する方法はありますか?たとえば、デフォルトの255文字のように、各コンポーネントを指定の制限よりも長くするにはどうすればよいですか? – Swtsvn

1

その制限が存在する前記さて、まず、これは、特定のC#とは何の関係も、およびWindows APIに関係するすべてのものを持っていません。で、Naming Files, Paths, and Namespaces

Unicodeのファイルパス(質問に対する回答に記載されており、MSDNの記事は)解決策のようであってもよい::)

は、MSDNにあなたを導くであろう、 this questionとその答えを見てみましょういくつかの警告。

8
MSDNから

のWindows APIも32,767文字の最大総経路長の拡張の長さのパスを可能にするために、Unicodeのバージョンを持っている多くの機能を持っています。このタイプのパスは、GetVolumeInformation関数のlpMaximumComponentLengthパラメーターで返される値までのバックスラッシュで区切られたコンポーネントで構成されます(この値は、通常255文字です)。拡張された長さのパスを指定するには、接頭辞「\\?\」を使用します。たとえば、「\\?\D:\very long path」と入力します。