Por que o NTFS não permite o uso de períodos finais em nomes de diretório? [fechadas]

4

No Linux, posso ter uma pasta chamada temp. .

Se eu tentar fazer um mkdir temp. em uma máquina Windows, o período final será truncado.

Se eu tentar sincronizar um diretório do Linux para o Windows que tenha um período posterior, ele falhará (encontrado em seafile por um colega).

Por que isso?

    
por warren 19.04.2013 / 21:00

1 resposta

8

O NTFS não o impede, é apenas a API do Win32 que o faz. Como Alex observou em um comentário, se você usar \?\... para ignorar a análise usual e fornecer o caminho bruto para a API do NT, poderá criar um diretório com um período posterior.

(Por que isso funciona? O artigo Namespaces de arquivo Win32 diz : "Para arquivo I / O, o prefixo" \? \ "Para uma seqüência de caminho informa as APIs do Windows para desabilitar toda a análise de seqüência de caracteres e enviar a seqüência de caracteres que segue diretamente para o sistema de arquivos. Por exemplo, se o sistema de arquivos suportar caminhos grandes e nomes de arquivos, você pode exceder os limites de MAX_PATH que são aplicados pelas APIs do Windows. ")

Quanto a por que o período final é retirado, não parece haver nenhuma documentação oficial, mas pode ter que fazer algo com compatibilidade com o antigo MS. Programas DOS ou Windows 3.11. No mundo do nome de arquivo 8.3, uma extensão vazia e nenhuma extensão era a mesma coisa - em ambos os casos, o nome do arquivo XYZ teria sido armazenado como XYZ····· e a extensão como ··· (pontos representando bytes nulos), então pode ter havido programas que dependiam desse fato. Quando o Windows 95 obteve suporte a nomes extensos, ele começou a armazenar o nome e a extensão como uma única string, fazendo com que xyz e xyz. se tornassem nomes de arquivo diferentes. Provavelmente teve que retirar o período final para evitar quebrar tais programas.

    
por 19.04.2013 / 22:20