Arquivos e Diretórios

Atualizado pela última vez em setembro de 2013.

Aqui são apresentados os conceitos arquivo e diretório e diretório no contexto de informática. A página foi criada para cursos introdutórios da UFLA e fica disponível publicamente como uma forma de extensão.

Definição de Arquivo

Em informática, um arquivo é um conjunto de dados que se relacionam de alguma forma, ou seja, juntos descrevem uma informação ou conjunto de informações. Em função da natureza dos computadores, arquivos são sempre formados por dados digitais, organizados seguindo algum tipo de estrutura (ou formato). Arquivos podem representar informações das mais diversas naturezas como imagens, áudio, texto, instruções para processadores, etc. podendo inclusive representar uma combinação desses tipos, como por exemplo um vídeo que contém informações gráficas (a imagem), sonoras (o áudio)e textuais (a legenda).

Cada arquivo precisa de uma identificação. Do ponto de vista de um computador, arquivos são geralmente identificados por números (como os inodes). Do ponto de vista do usuário de um computador, um arquivo é quase sempre representado por um nome. O computador guarda associações entre os nomes e os números para poder transformar o primeiro no segundo sempre que necessário.

Como um sistema computacional costuma lidar com milhares de arquivos, é comum que vários arquivos sejam agrupados em conjuntos maiores, seguindo alguma organização que facilite a recuperação de arquivos por parte dos usuários.

Definição de Diretório

Um diretório é uma subdivisão lógica de um sistema de arquivos, que permite o agrupamento de arquivos que se relacionam de alguma forma. Diretórios são frequentemente chamados de pastas em função de uma analogia presente nos sistemas Windows que mais recentemente foi adotada por diversos outros sistemas.

A divisão proporcionada por um diretório é lógica, no sentido que não existe necessariamente uma divisão física das informações relativas a um diretório. Alguns sistemas como o Linux, permitem inclusive que um arquivo possa ser identificado por mais de um nome, que podem inclusive ser parte de diretórios diferentes num mesmo sistema de arquivos.

Organização Hierárquica de Um Sistema de Arquivos

Um sistema computacional costuma lidar com milhares de arquivos. Assim é normal que existam centenas de diretórios para organizar esses arquivos. Assim, os próprios diretórios são também organizados em grupos, numa estrutura hierárquica, facilitando a recuperação de diretórios por usuários.

Organização hierárquica significa que diretórios também são organizados em conjuntos por meio de outros diretórios. Assim podemos dizer que um diretório é um conjunto de arquivos e diretórios. Dessa forma, diretórios podem ser chamados de subdiretórios quando se faz referência aos diretórios que os contém.

Essa organização hierárquica exige um ponto de partida; um diretório fixo a partir do qual todos os outros podem ser identificados. Esse ponto de partida é chamado de diretório raiz.

Referências a Arquivos

Voltando ao problema da identificação de arquivos por parte dos usuários, a organização hierárquica implica que os arquivos não serão necessariamente identificáveis por seus nomes pura e simplesmente, mas sim por seus nomes combinados com os nomes dos diretórios que os contém. Um sistema computacional pode ter vários arquivos chamados notas, cada qual num diretório diferente.

Nomes completos

A combinação nome do arquivo mais nome dos diretórios que o contém é conhecida por nome completo. Um nome completo é uma identificação única de um arquivo num sistema computacional. É somente através de nomes completos que os arquivos podem ser identificados.

Em Linux um nome completo deve começar com a barra, como em /home/alunos/fulano/programas/aed1/alomundo.pas. A barra inicial identifica o diretório raiz.

Em Windows, os sistemas de arquivos contém um outro tipo de subdivisão, os drives. Cada drive contém um diretório raiz, que contém subdiretórios e arquivos. Drives são identificados por uma única letra seguida do sinal de dois pontos. Assim, um exemplo de nome completo no Windows é algo como Z:\programas\aed1\alomundo.pas.

Nomes relativos

Nomes completos tem a desvantagem de ser, em geral, muito grandes; dificultando a identificação por parte dos usuários. Para amenizar esse problema, os programas de computador permitem que a parte inicial de um nome seja omitida em favor de alguma referência.

Separadores ('/' e '\')

Na seção anterior podemos notar que nomes de arquivos e diretórios s?o combinados por caracteres especiais. Especiais no sentido de que não devem (e em geral simplesmente não podem) ser usados em nomes comuns, pois têm a função de combinar nomes de arquivos e diretórios para formar nomes completos. Esses caracteres especiais podem ser entendidos como separadores que identificam as várias partes de um nome completo.

Podemos notar que o Windows usa o caracter \ (barra invertida) enquanto que o Linux (e a maioria dos outros sistemas operacionasi) usam o caracter / (barra) como separador.

O arquivo /home/alunos/fulano/programas/aed1/alomundo.pas é então um arquivo chamado alomundo.pas que fica num diretório chamado aed1 que fica num diretório chamado programas, que fica num diretório chamado fulano, que fica num diretório chamado alunos, que fica num diretório chamado home que fica no diretório raiz.

Diretório Corrente

Diretório corrente é uma referência, usada para transformar nomes relativos em nomes completos, permitindo a identificação de um arquivo. Cada programa tem o seu diretório corrente. Vários programas sendo executados ao mesmo tempo podem ter diretórios correntes distintos.

Quando a parte inicial de um nome é omitida (nome relativo), o programa que deseja recuperar o arquivo em questão adiciona o diretório corrente ao nome. Desta forma, o arquivo /home/alunos/fulano/programas/aed1/alomundo.pas pode ser identificado, por exemplo, pelo nome programas/aed1/alomundo.pas, desde que o diretório corrente seja /home/alunos/fulano. Se o diretório corrente for outro, o nome relativo programas/aed1/alomundo.pas pode identificar um outro arquivo (talvez o /home/alunos/beltrano/programas/aed1/alomundo.pas) ou pode identificar nenhum.

A predominância dos programas com interface gráfica faz com que hoje em dia, nomes de arquivos sejam frequentemente definidos através de cliques no mouse, da seguinte forma: O programa abre uma janela conhecida como "diálogo de abrir (ou salvar) arquivo", em que aparece o conteúdo do diretório corrente (diretórios ou pastas contidos no diretório corrente). O usuário então clica em um desses elementos, alterando o diretório corrente e recomeçando o processo caso o elemento selecionado seja um diretório ou terminando o processo pela seleção de um nome de arquivo.

Os diálogos de abrir arquivos podem incluir formas de escrever o nome desejado (especialmente no caso de programas para Linux). O nome pode ser escrito de forma completa ou de forma relativa ao diretório corrente, que é apresentado pela janela. Escrever um nome relativo (em oposição a clicar vários elementos) pode ser uma forma mais eficiente de identificar um arquivo. Aprenda a usar esse recurso.

No caso do Windows, o uso de drives, cria a necessidade do conceito do drive corrente, análogo ao do diretório corrente.

PATH (Caminho)

O sistema de completar nomes de arquivos por meio do diretório corrente não é muito eficiente para nomes de arquivos que são programas executáveis.

Isso porque é comum que na organização hierárquica de um sistema de arquivos, os arquivos que contém programas executáveis fiquem separados dos arquivos que contém dados a serem usados por esses programas.

Os nomes de arquivos que são programas executáveis podem ser completados de uma outra forma: o PATH. Path (caminho em Inglês) é uma lista de diretórios usada para completar nomes de programas. O path, ao contrário do diretório corrente, é uma configuração do computador, não necessita ser alterada constantemente (os programas do seu computador não são alterados toda hora) e, a não ser que seja alterado durante uma sessão de uso do computador, é igual para todos os programas.

No Linux, existem restrições ao uso do diretório corrente para completar nomes de programas executáveis. Isso porque usar o diretório corrente cria problemas de segurança (ajuda a enganar um usuário, fazendo com que ele execute um programa achando que está executando outro). O diretório corrente é usado para completar somente nomes que comecem pela identificação de diretórios. Vamos supor que você acabou de criar um programa executável chamado somador, ou mais precisamente, /home/alunos/fulano/programas/aed1/somador. Se você mandar executar o arquivo somador, tendo como diretório corrente o diretório /home/alunos/fulano/programas/aed1, o arquivo não será executado (a restrição de segurança impede que o nome seja completado). Porém, se você mandar executar o arquivo aed1/somador (que é um nome relativo começando com um diretório), tendo como diretório corrente o diretório /home/alunos/fulano/programas, o arquivo será executado.

Em geral, a configuração do PATH num computador só é necessária durante a instalação de um programa. Se você encontrar um computador da UFLA em que o PATH está mal configurado, dificultando a execução dos programas instalados, solicite a correção para o pessoal responsável.

Nomes Especiais

Existem dois nomes especiais (no sentido em que seu uso é reservado) de diretórios. O diretório '.' (ponto) é sempre uma referência ao diretório corrente. O diretório '..' (ponto ponto) é sempre uma referência ao diretório imediatamente superior (na hierarquia de diretórios) ao diretório corrente.

Esses nomes especiais são úteis em diversas ocasiões, por exemplo:

Os sistemas da família Unix têm um outro nome especial muito útil. É o ~ (til). Ele é uma referência ao diretório home. Diretório home é um diretório num sistema de arquivos que serve para uso pessoal de um determinado usuário.

Extensões de Nomes

Nomes de arquivos são sequências de caracteres que identificam um arquivo, mas lembre-se que alguns caracteres são especiais. No sistema operacional MS DOS, nomes de arquivos eram limitados a oito caracteres mais uma extensão de três caracteres. O ponto era um caracter especial que separava o nome (propriamente dito) da extensão. A extensão era usada para identificar o tipo de arquivo, ou seja, a organização dos dados num arquivo. Assim o arquivo aed1.txt era um arquivo chamado aed1 cujas informações estavam organizadas na forma de texto puro.

Hoje em dia, essa limitação não existe mais nos sistemas da MicroSoft, porém todas as variantes de Windows ainda procuram manter o conceito de extensão de nome. Hoje a extensão não é limitada a três caracteres e o ponto não é mais um caracter especial, o que gera alguns problemas.

Em outros sistemas operacionais, como o Linux, o ponto nunca teve significado especial e as extensões de nomes não são incentivadas (apesar de serem quase sempre usadas). Ao usar alternadamente os dois sistemas operacionais, é bom ter em mente as seguintes questões:

Recomendações para nomes de arquivos

Para evitar problemas com nomes de arquivos, é recomendável:

Esta página é mantida por Bruno Schneider