Ich entwerfe eine Datenbanktabelle, die Dateinamen von hochgeladenen Dateien enthält. Was ist die maximale Länge eines Dateinamens in NTFS, wie er von Windows XP oder Vista verwendet wird?
windows-vista
windows-xp
ntfs
filenames
name-length
GateKiller
quelle
quelle
Antworten:
Einzelne Komponenten eines Dateinamens (dh jedes Unterverzeichnis entlang des Pfads und der endgültige Dateiname) sind auf 255 Zeichen und die Gesamtpfadlänge auf ungefähr 32.000 Zeichen begrenzt.
Unter Windows darf der
MAX_PATH
Wert jedoch nicht überschritten werden (259 Zeichen für Dateien, 248 für Ordner). Sehenhttp://msdn.microsoft.com/en-us/library/aa365247.aspx für weitere Informationen.quelle
Es sind 257 Zeichen. Um genau zu sein: NTFS selbst legt eine maximale Dateinamenlänge von mehreren tausend Zeichen fest (ungefähr 30'000). Windows legt jedoch eine maximale Länge von 260 für den Pfad + Dateinamen fest. Der Ordner "Laufwerk +" nimmt mindestens 3 Zeichen auf, sodass Sie 257 erhalten.
quelle
Dies ist, was die "Nicht behandelte Ausnahme" in Framework 4.5 sagt, wenn versucht wird, eine Datei mit einem langen Dateinamen zu speichern:
quelle
199 unter Windows XP NTFS habe ich gerade überprüft.
Dies ist keine Theorie, sondern nur das Anprobieren meines Laptops. Es mag mildernde Effekte geben, aber ich kann es physisch nicht größer machen.
Gibt es eine andere Einstellung, die dies einschränkt? Probieren Sie es aus.
quelle
w
, diese gelöscht und unter Windows 7 x64 einen gleichnamigen Ordner erstellt. Die Frage ist nun, was hier der begrenzende Faktor ist: die NTFS-Version, das Betriebssystem oder das Subsystem oder die Win32-API in XP?Laut MSDN sind es 260 Zeichen. Es enthält
"<NUL>"
das unsichtbare abschließende Nullzeichen, sodass die tatsächliche Länge 259 beträgt.Aber lesen Sie den Artikel, es ist etwas komplizierter.
quelle
\\?\
Präfix zur Laufzeit intern auf eine nicht angegebene Länge erweitert. Der Pfad muss nach dieser Erweiterung unter 32767 Byte bleiben.Die Länge in NTFS beträgt 255. Das
NameLength
Feld im NTFS-$Filename
Attribut ist ein Byte ohne Offset. Dies ergibt einen Bereich von 0 bis 255.Der Dateiname iself kann sich in verschiedenen "Namespaces" befinden. Bisher gibt es: POSIX, WIN32, DOS und (WIN32DOS - wenn ein Dateiname nativ ein DOS-Name sein kann). (Da die Zeichenfolge eine Länge hat, könnte sie \ 0 enthalten, dies würde jedoch zu Problemen führen und befindet sich nicht in den obigen Namespaces.)
Somit kann der Name einer Datei oder eines Verzeichnisses bis zu 255 Zeichen lang sein. Wenn Sie den vollständigen Pfad unter Windows die Angabe, müssen Sie den Pfad mit dem Präfix \\? \ (Oder verwenden Sie \\? \ UNC \ Server \ Freigabe für UNC - Pfade) diesen Weg als extended-Länge eines markieren (~ 32k Zeichen) . Wenn Ihr Pfad länger ist, müssen Sie Ihr Arbeitsverzeichnis auf dem Weg festlegen (ugh - Nebenwirkungen aufgrund der prozessweiten Einstellung).
quelle
255 Zeichen.
http://en.wikipedia.org/wiki/Filename
quelle
Ich füge dies der oben genehmigten Antwort hinzu.
Um klar zu sein, glauben die Leute, dass es 255-260 Zeichen sind, weil das alles ist, was Windows Explorer unterstützt. Es wird ein Fehler beim Ausführen einer Dateikopie für Dateinamen auftreten, die länger dauern. Ein Programm kann jedoch viel längere Dateinamen lesen und schreiben (so gelangen Sie zu Längen, über die sich der Explorer überhaupt beschwert). Microsoft empfiehlt in solchen Situationen, die Datei in dem ursprünglichen Programm zu öffnen, in dem sie geschrieben wurde, und sie umzubenennen.
quelle
Laut der neuen Windows SDK-Dokumentation (8.0) scheint eine neue Pfadbeschränkung vorgesehen zu sein. Es gibt einen neuen Satz von Pfadhandhabungsfunktionen und eine Definition von PATHCCH_MAX_CCH wie folgt:
quelle
In diesem Teil der offiziellen Dokumentation wird klargestellt, dass es sich um 255 Unicode-Zeichen für NTFS, exFAT und FAT32 und 127 Unicode- oder 254 ASCII-Zeichen für UDF handelt.
Abgesehen davon beträgt die maximale Länge des Pfadnamens immer 32.760 Unicode-Zeichen, wobei jede Pfadkomponente nicht mehr als 255 Zeichen enthält.
quelle
WCHAR
Elemente. Nein, es handelt sich nicht um "Unicode-Zeichen" (überprüfen Sie Ihre Unicode-Terminologie: Codepunkte, Zeichen usw. ...!).255 Zeichen, obwohl der vollständige Pfad auch nicht länger sein sollte. Bei Wikipedia gibt es dazu eine schöne Tabelle: http://en.wikipedia.org/wiki/Filename .
quelle
238! Ich habe es unter Win7 32 Bit mit dem folgenden Bat-Skript überprüft:
quelle
w
). So was nun?Tatsächlich ist es 256, siehe Vergleich der Dateisystemfunktionalität, Grenzwerte .
So wiederholen Sie einen Beitrag auf http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html
Wenn Sie die obigen Beiträge lesen, werden Sie feststellen, dass es eine fünfte Sache gibt, bei der Sie sich sicher sein können: Mindestens einen hartnäckigen Computerbenutzer finden!
quelle
Ich kann im WS 2012 Explorer keine Datei mit dem Namen + Punkt + Extnesion erstellen, die länger als 224 Zeichen ist. Erschieße nicht den Boten!
In der CMD desselben Servers kann ich keinen Namen mit mehr als 235 Zeichen erstellen :
Die im Explorer erstellte Datei mit einem 224-stelligen Namen kann in Notepad ++ nicht geöffnet werden. Stattdessen wird nur eine neue Datei angezeigt.
quelle
The system cannot find the path specified.
ist nicht dasselbe wieThe specified path, file name, or both are too long.
. Ich denke du hattest einen Tippfehler oder so. Sie erhalten diese Meldung, wenn Sie versuchen, eine Datei in einem nicht vorhandenen Pfad zu erstellen, oder wenn Sie in eine Richtung wechseln möchten, die nicht vorhanden ist.