Projektuję tabelę bazy danych, w której będą przechowywane nazwy plików przesyłanych plików. Jaka jest maksymalna długość nazwy pliku w systemie plików NTFS używanego przez system Windows XP lub Vista?
windows-vista
windows-xp
ntfs
filenames
name-length
GateKiller
źródło
źródło
Odpowiedzi:
Poszczególne elementy nazwy pliku (tj. Każdy podkatalog wzdłuż ścieżki i końcowa nazwa pliku) są ograniczone do 255 znaków, a całkowita długość ścieżki jest ograniczona do około 32 000 znaków.
Jednak w systemie Windows nie można przekroczyć
MAX_PATH
wartości (259 znaków dla plików, 248 dla folderów). Widziećhttp://msdn.microsoft.com/en-us/library/aa365247.aspx, aby uzyskać szczegółowe informacje.źródło
Ma 257 znaków. Mówiąc dokładniej: sam NTFS narzuca maksymalną długość nazwy pliku wynoszącą kilka tysięcy znaków (około 30'000 coś). Jednak system Windows narzuca maksymalną długość 260 dla ścieżki + nazwy pliku. Folder drive + zajmuje co najmniej 3 znaki, więc kończy się na 257.
źródło
Oto, co mówi „Nieobsługiwany wyjątek” w środowisku 4.5 podczas próby zapisania pliku o długiej nazwie pliku:
źródło
199 na Windows XP NTFS, właśnie sprawdziłem.
To nie jest teoria, ale po prostu przymierzanie laptopa. Mogą występować efekty łagodzące, ale fizycznie nie pozwoli mi to zwiększyć.
Zastanawiam się, czy jest jakieś inne ustawienie, które to ogranicza. Wypróbuj sam.
źródło
w
, usunąłem go i utworzyłem folder o tej samej nazwie w systemie Windows 7 x64. Teraz pytanie brzmi, co jest tutaj czynnikiem ograniczającym: wersja NTFS, system operacyjny lub podsystem lub interfejs API Win32 w XP?Według MSDN ma 260 znaków. Obejmuje
"<NUL>"
niewidoczny kończący znak zerowy, więc rzeczywista długość wynosi 259.Ale przeczytaj artykuł, jest to trochę bardziej skomplikowane.
źródło
\\?\
w czasie wykonywania do określonej nieokreślonej długości. Po tym rozszerzeniu ścieżka musi pozostać poniżej 32767 bajtów.Długość w NTFS wynosi 255.
NameLength
Pole w$Filename
atrybucie NTFS to bajt bez przesunięcia; daje to zakres 0-255.Nazwa pliku może znajdować się w różnych „przestrzeniach nazw”. Do tej pory są to: POSIX, WIN32, DOS i (WIN32DOS - kiedy nazwa pliku może być natywnie nazwą DOS). (Ponieważ łańcuch ma długość, może zawierać \ 0, ale może to powodować problemy i nie znajduje się w powyższych obszarach nazw).
Dlatego nazwa pliku lub katalogu może mieć do 255 znaków. Określając pełną ścieżkę w systemie Windows, należy poprzedzić ją \\? \ (Lub użyć \\? \ UNC \ server \ share dla ścieżek UNC), aby oznaczyć tę ścieżkę jako ścieżkę o rozszerzonej długości (~ 32 tys. Znaków) . Jeśli twoja ścieżka jest dłuższa, będziesz musiał ustawić katalog roboczy po drodze (ugh - skutki uboczne ze względu na ustawienie całego procesu).
źródło
255 znaków.
http://en.wikipedia.org/wiki/Filename
źródło
Dodaję to do powyższej zatwierdzonej odpowiedzi.
ABY BYĆ CZYSTY, powodem, dla którego ludzie uważają, że jest to 255-260 znaków, jest to wszystko, co obsługuje Eksplorator Windows. Błąd spowoduje zrobienie czegoś takiego jak kopia pliku na nazwach plików dłuższych niż to. Jednak program może odczytywać i zapisywać znacznie dłuższe nazwy plików (w taki sposób dochodzisz do długości, na które Explorer narzeka w pierwszej kolejności). „Zalecaną poprawką” firmy Microsoft w takich sytuacjach jest otwarcie pliku w oryginalnym programie, który go napisał, i zmiana jego nazwy.
źródło
Według nowej dokumentacji zestawu Windows SDK (8.0) wydaje się, że wprowadzono nowy limit ścieżek. Istnieje nowy zestaw funkcji do obsługi ścieżek i definicja PATHCCH_MAX_CCH, jak poniżej:
źródło
Ta część oficjalnej dokumentacji wyraźnie mówi, że jest to 255 znaków Unicode dla NTFS, exFAT i FAT32 oraz 127 znaków Unicode lub 254 znaki ASCII dla UDF.
Poza tym maksymalna długość nazwy ścieżki wynosi zawsze 32 760 znaków Unicode, przy czym każdy składnik ścieżki nie może mieć więcej niż 255 znaków.
źródło
WCHAR
elementów. Nie, to nie są „znaki Unicode” (sprawdź terminologię Unicode: punkty kodowe, znaki itp.!).255 znaków, choć pełna ścieżka również nie powinna być dłuższa. W Wikipedii znajduje się ładny stół na ten temat: http://en.wikipedia.org/wiki/Filename .
źródło
238! Sprawdziłem to pod Win7 32 bit z następującym skryptem nietoperza:
źródło
w
). Co teraz?W rzeczywistości jest to 256, zobacz Porównanie funkcjonalności systemu plików, limity .
Aby powtórzyć post na http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html
Jeśli przeczytasz powyższe posty, zobaczysz, że jest piąta rzecz, której możesz być pewien: Znalezienie co najmniej jednego upartego użytkownika komputera!
źródło
Nie mogę utworzyć pliku o nazwie + kropka + rozszerzenie w WS 2012 Explorer dłużej niż 224 znaki. Nie strzelaj do posłańca!
W CMD tego samego serwera nie mogę utworzyć nazwy dłuższej niż 235 :
Pliku o nazwie 224 znaków utworzonego w Eksploratorze nie można otworzyć w Notepad ++ - zamiast tego pojawia się nowy plik.
źródło
The system cannot find the path specified.
to nie to samo coThe specified path, file name, or both are too long.
. Chyba miałeś literówkę lub coś takiego. Otrzymujesz ten komunikat, jeśli próbujesz utworzyć plik w ścieżce, która nie istnieje lub jeśli chcesz przejść w kierunku, który nie istnieje.