Estou projetando uma tabela de banco de dados que conterá os nomes dos arquivos dos arquivos enviados. Qual é o tamanho máximo de um nome de arquivo no NTFS usado pelo Windows XP ou Vista?
windows-vista
windows-xp
ntfs
filenames
name-length
GateKiller
fonte
fonte
Respostas:
Os componentes individuais de um nome de arquivo (ou seja, cada subdiretório ao longo do caminho e o nome do arquivo final) são limitados a 255 caracteres e o comprimento total do caminho é limitado a aproximadamente 32.000 caracteres.
No entanto, no Windows, você não pode exceder o
MAX_PATH
valor (259 caracteres para arquivos, 248 para pastas). Vejohttp://msdn.microsoft.com/en-us/library/aa365247.aspx para obter detalhes completos.fonte
São 257 caracteres. Para ser mais preciso: o próprio NTFS impõe um tamanho máximo de nome de arquivo de vários milhares de caracteres (cerca de 30.000). No entanto, o Windows impõe um comprimento máximo de 260 para o Path + Filename. A pasta drive + ocupa pelo menos 3 caracteres, então você termina com 257.
fonte
É o que a "Exceção não tratada" diz na estrutura 4.5 ao tentar salvar um arquivo com um nome de arquivo longo:
fonte
199 no Windows XP NTFS, acabei de verificar.
Isso não é teoria, mas apenas tentando no meu laptop. Pode haver efeitos atenuantes, mas fisicamente não vai me deixar aumentar.
Existe alguma outra configuração limitando isso, eu me pergunto? Experimente você mesmo.
fonte
w
, excluí-o e criei uma pasta com o mesmo nome no Windows 7 x64. Agora, a pergunta é qual é o fator limitante aqui: a versão NTFS, o sistema operacional ou o subsistema ou a API Win32 no XP?De acordo com o MSDN , são 260 caracteres. Ele inclui o
"<NUL>"
caractere nulo final invisível, portanto o comprimento real é 259.Mas leia o artigo, é um pouco mais complicado.
fonte
\\?\
prefixo necessário no tempo de execução para um comprimento não especificado. O caminho deve permanecer abaixo de 32767 bytes após essa expansão.O comprimento no NTFS é 255. O
NameLength
campo no$Filename
atributo NTFS é um byte sem deslocamento; isso gera um intervalo de 0 a 255.O próprio nome do arquivo pode estar em diferentes "namespaces". Até o momento, existem: POSIX, WIN32, DOS e (WIN32DOS - quando um nome de arquivo pode ser nativamente um nome de DOS). (Como a cadeia tem um comprimento, ela pode conter \ 0, mas isso traria problemas e não está nos espaços para nome acima.)
Assim, o nome de um arquivo ou diretório pode ter até 255 caracteres. Ao especificar o caminho completo no Windows, você precisa prefixar o caminho com \\? \ (Ou usar \\? \ UNC \ server \ share para caminhos UNC) para marcar esse caminho como um comprimento estendido (~ 32k caracteres) . Se o seu caminho for mais longo, você terá que definir seu diretório de trabalho ao longo do caminho (ugh - efeitos colaterais devido à configuração do processo).
fonte
255 caracteres.
http://en.wikipedia.org/wiki/Filename
fonte
Estou adicionando isso à resposta aprovada acima.
PARA SER CLARO, a razão pela qual as pessoas acreditam que sejam 255-260 caracteres é porque isso é tudo o que o Windows Explorer suporta. Será um erro fazer algo como uma cópia de arquivo em nomes de arquivos mais longos do que isso. No entanto, um programa pode ler e gravar nomes de arquivos muito mais longos (que é a maneira pela qual você obtém informações que o Explorer reclama em primeiro lugar). A "correção recomendada" da Microsoft em situações como essa é abrir o arquivo no programa original que o escreveu e renomeá-lo.
fonte
De acordo com a nova documentação do Windows SDK (8.0), parece que um novo limite de caminho é fornecido. Há um novo conjunto de funções de manipulação de caminho e uma definição de PATHCCH_MAX_CCH da seguinte maneira:
fonte
Esta parte da documentação oficial diz claramente que são 255 caracteres Unicode para NTFS, exFAT e FAT32 e 127 caracteres Unicode ou 254 caracteres ASCII para UDF.
Além disso, o comprimento máximo do nome do caminho é sempre 32.760 caracteres Unicode, com cada componente do caminho com no máximo 255 caracteres.
fonte
WCHAR
elementos. Não, não são "caracteres Unicode" (verifique sua terminologia Unicode: pontos de código, caracteres etc ...!).255 caracteres, embora o caminho completo também não deva ser mais longo. Há uma boa tabela na Wikipedia sobre isso: http://en.wikipedia.org/wiki/Filename .
fonte
238! Eu verifiquei no Win7 32 bits com o seguinte script bat:
fonte
w
). E agora?Na verdade, é 256, consulte Comparação de funcionalidades do sistema de arquivos, Limites .
Para repetir uma postagem em http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html
Se você ler as postagens acima, verá uma quinta coisa de que pode ter certeza: Encontrar pelo menos um usuário obstinado de computador!
fonte
Não consigo criar um arquivo com o nome + ponto + extnião no WS 2012 Explorer com mais de 224 caracteres. Não atire no mensageiro!
No CMD do mesmo servidor, não consigo criar um nome com mais de 235 caracteres:
O arquivo com um nome de 224 caracteres criado no Explorer não pode ser aberto no Notepad ++ - ele apenas cria um novo arquivo.
fonte
The system cannot find the path specified.
não é o mesmo queThe specified path, file name, or both are too long.
. Eu acho que você teve um erro de digitação ou algo assim. Você recebe essa mensagem se tentar criar um arquivo em um caminho que não existe ou se desejar mover para uma direção que não existe.