2009-12-07 6 views

Antwort

20

Die Beschränkung von 260 Zeichen ist keine Einschränkung des Dateisystems, aber der Win32-API. Win32 definiert MAX_PATH als 260, was die API verwendet, um die Länge des Pfades zu überprüfen, der an Funktionen wie FileCreate, FileOpen usw. übergeben wird (die von .NET in der BCL verwendet werden).

Sie können jedoch die Win32-Regeln umgehen und Pfade mit bis zu 32.000 Zeichen erstellen. Im Grunde genommen müssen Sie die Syntax "\\? \ C: \ MyReallyLongPath \ File.txt" verwenden, die Sie vorher vielleicht noch nicht gesehen haben. Zuletzt habe ich überprüft, dass die Datei- und FileInfo-Klassen in .NET die Verwendung dieses Pfadtyps verhindert haben, aber Sie können das definitiv aus C/C++ tun. Hier ist ein Link für weitere Informationen.

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

+0

Es sollte beachtet werden, dass eine API mit Windows 95 eingeführt wurde, die Unterstützung Pfade tut länger als 'MAX_PATH' Zeichen: der Shell-API. –

4

Zitat von wikipedia

Dateinamen, um Wörter 255 UTF-16-Code beschränkt. Bestimmte Namen sind in der Volume-Stammverzeichnis Verzeichnis reserviert und können nicht für Dateien verwendet werden. Diese sind: $ MFT, $ MFTMirr, $ LogFile, $ Volumen, $ AttrDef,. (dot), $ Bitmap, $ Boot, $ BadClus, $ Sicher, $ Upcase und $ Extend; [3]. (dot) und $ Extend sind beide Verzeichnisse; die andere sind Dateien. Der NT-Kernel Grenzen vollständige Pfade zu 32.767 UTF-16-Code Worte.

http://en.wikipedia.org/wiki/NTFS

3

Doc. Sie sollten sicherlich in der Lage sein, längere Dateipfade als 255 Bytes zu erstellen, solange jede einzelne Pfadkomponente darunter liegt. Sie müssen jedoch die Unicode (W) -Versionen der Dateizugriffsaufrufe verwenden, um dieses Verhalten zu erhalten. Wenn Sie die bytebasierten ANSI (A) -Schnittstellen verwenden, wie sie von stdio verwendet werden, bleiben Sie bei den Einschränkungen der alten Pre-Unicode-Pfadschnittstelle stecken.

Verwandte Themen