Qual é o nome do arquivo + extensão para um arquivo com um período como o primeiro caractere (exemplo: .txt)?

2

Estou tentando encontrar uma resposta oficial sobre esse assunto, mas é difícil. A Wikipedia meio que dança em torno do problema, mas não é explícita o suficiente.

Para .txt (para usar um exemplo), o nome base é null / empty e a extensão txt ? Ou o nome base .txt (incluindo o período) e a extensão null / empty?

E sobre algo estranho como .a.b ?

Eu percebo que pode haver algumas diferenças no sistema operacional, então estou interessado no que elas são + qual é a regra prática "agnóstica" recomendada pelo sistema operacional. Eu pretendo programar a lógica de análise no servidor para um aplicativo da web, portanto, ele precisa analisar as sequências de nome de arquivo enviadas de vários sistemas operacionais diferentes.

    
por XåpplI'-I0llwlg'I - 09.01.2014 / 15:47

1 resposta

3

Se você quiser agnóstico do SO, não existe uma "extensão de nome de arquivo". Certos sistemas operacionais podem, na verdade, usá-los para determinar o programa para abrir um arquivo, ou até mesmo ir tão longe quanto explicitamente restringi-los (pense em FAT com 3 caracteres no máximo).

Mas as informações também podem ser coletadas de números mágicos ou outras heurísticas. Extensões de nome de arquivo são apenas metadados - onde os dados são armazenados não importam do ponto de vista do sistema operacional. Por exemplo, no * nix, um arquivo de script inclui um shebang na parte superior do arquivo. O shebang informa com qual interpretador o arquivo deve ser executado, por exemplo, /bin/bash ou /usr/bin/env ruby , etc.

No mundo * nix, um "nome-base" é apenas o nome do arquivo com quaisquer componentes principais (ou seja, caminhos incluindo o último / ) removidos. Assim, o nome de base de .txt seria .txt . E o nome de base de /usr/bin/foo seria foo .

Os arquivos que começam com pontos são chamados de dotfiles . Eles não são de modo algum especiais além dos sistemas operacionais do tipo Unix que devem estar ocultos das listagens de diretório por padrão. Seu nome de base é seu nome completo, portanto, .bashrc é realmente chamado de .bashrc . Um dotfile não possui uma extensão, por si só.

Portanto, se você quiser permanecer independente do sistema operacional, tente obter o nome de base (no sentido nix da palavra) e armazene-o. Qualquer outra coisa sempre será definida ambiguamente.

Além disso, você pode tentar extrair uma extensão, que seriam os componentes de nome de base completos a partir do último ponto encontrado, por exemplo, foo.tar.gz seria obviamente um arquivo .gz e não um .tar.gz . Somente quando descompactado com o gzip, ele se torna um foo.tar , que seria descompactado pelo tar. E assim por diante.

    
por 09.01.2014 / 15:56