O tipo file é usado basicamente para armazenamento de dados em memória secundária. Contudo, é possível também se utilizar deste tipo para gravação na memória principal.
Desta forma, o tamanho que os arquivos podem ocupar dependem basicamente do espaço livre em disco ou em RAM.
Um arquivo é declarado da seguinte maneira:
var F: file of <tipo>;
observando-se que <tipo> pode ser uma estrutura de qualquer tipo, exceto o próprio tipo file.
É possível não se informar o tipo do arquivo, o que resulta em um arquivo sem tipo. Segundo o guia de referência, isto é equivalente a um arquivo de bytes.
Para se usar uma variável do tipo arquivo, alguns comandos são necessários:
Segue um exemplo em que um arquivo de registros (record) é usado para armazenar uma agenda em disco.
type agenda = record nome: string; rg, fone: longint; end; var F: file of agenda; begin assign (F,'~/dados/agenda.db'); reset (F); // comandos que manipulam a agenda close (F); end.
Um arquivo especial é o do tipo text, que armazena dados que podem ser manipulados pelas bibliotecas padrão de entrada e saída, inclusive as entradas default input (teclado) e output (tela).
O código a seguir mostra o uso de um arquivo do tipo text.
var F: text; i: integer; begin assign (F,'~/dados/entrada.txt'); reset (F); read (F,i); // comandos que manipulam a variavel i write (F,i); // imprime i no arquivo texto (ASCII); write (i); // imprime i na tela; close (F); end.
No caso, o comando read vai ler do arquivo F ao invés do teclado, e escrever no arquivo F no lugar da tela. O arquivo F está em disco e pode ser editado no sistema operacional, inclusive. No Linux, pode substituir o uso de redirecionamento de entrada e saída, dependendo do caso.