Documents Directory: o que é, finalidade e acesso a arquivos

Autor: IT Sectr Publicado: 2026-07-10 Tempo de leitura: 10 min

Documents Directory é um diretório no sandbox de uma aplicação iOS projetado para armazenar dados do usuário que devem persistir entre as sessões da aplicação e estar acessíveis ao usuário através do iTunes File Sharing e iCloud. De acordo com o Apple File System Programming Guide (2024), o conteúdo deste diretório é automaticamente incluído nos backups do iCloud e iTunes, portanto o desenvolvedor deve escolher conscientemente quais dados colocar em Documents. Ao contrário do Caches Directory, os arquivos em Documents não são excluídos pelo sistema quando o espaço está baixo — a responsabilidade por gerenciar o tamanho é da aplicação.

Principais conclusões

  • Documents Directory é o diretório principal para arquivos do usuário que devem persistir e estar acessíveis via iTunes.
  • Os dados do Documents são automaticamente copiados para o iCloud e iTunes — leve isso em consideração ao projetar seu armazenamento.
  • O sistema não exclui arquivos do Documents ao limpar o cache — o desenvolvedor é responsável por liberar espaço.
  • O caminho para o diretório é obtido através de NSSearchPathForDirectoriesInDomains com NSDocumentDirectory ou através de FileManager.urls.
  • Para arquivos grandes que podem ser recuperados, use Caches Directory — para não desperdiçar espaço no backup do iCloud.

O que é Documents Directory no iOS?

Documents Directory é um diretório dentro do sandbox de uma aplicação iOS projetado para armazenar dados do usuário que devem persistir entre as execuções e estar acessíveis ao usuário. Cada aplicação recebe seu próprio sandbox isolado, e Documents é um dos diretórios principais ao lado de Caches, tmp e Library.

O iOS usa um sandbox rigoroso: uma aplicação não tem acesso ao sistema de arquivos de outras aplicações ou a diretórios do sistema sem permissões especiais. Documents Directory é o único diretório cujo conteúdo o usuário pode visualizar através do iTunes File Sharing (quando a chave UIFileSharingEnabled está ativada no Info.plist).

De acordo com a Apple WWDC 2023, mais de 85% das aplicações na App Store usam Documents Directory para armazenar pelo menos um tipo de dado do usuário — desde PDFs exportados até arquivos de jogo salvos e imagens exportadas.

É importante que o desenvolvedor entenda: os arquivos em Documents são automaticamente incluídos nos backups do iCloud e iTunes. Se uma aplicação armazena grandes volumes de dados recuperáveis em Documents (por exemplo, cache de imagens ou arquivos temporários), isso leva a um consumo desnecessário do espaço de armazenamento iCloud do usuário.

Como obter o caminho para Documents Directory

Em Swift, o caminho para Documents Directory é obtido através do FileManager. A Apple recomenda usar a API baseada em URL em vez da baseada em strings para melhor compatibilidade com os recursos modernos do iOS.

swift
import Foundation

let fileManager = FileManager.default
guard let documentsURL = fileManager.urls(
    for: .documentDirectory,
    in: .userDomainMask
).first else { return }

// Criar ficheiro em Documents
let fileURL = documentsURL.appendingPathComponent("report.pdf")
let data = Data("Hello, world!".utf8)
try data.write(to: fileURL)

O Objective-C usa NSSearchPathForDirectoriesInDomains — uma abordagem mais antiga mas ainda suportada que retorna um caminho de string em vez de uma URL.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory,
    NSUserDomainMask,
    YES
);
NSString *documentsPath = paths.firstObject;
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"report.pdf"];

Projetos modernos em Swift devem usar FileManager.urls, pois este método retorna uma URL em vez de uma string, o que reduz o risco de erros de codificação de caminhos e torna o código mais seguro em termos de tipos.

Quais dados armazenar em Documents

Documents Directory é destinado a dados criados pelo usuário ou explicitamente necessários ao usuário. A Apple destaca várias categorias apropriadas para este diretório.

Documentos e arquivos do usuário

Arquivos que o usuário cria ou importa — documentos de texto, PDFs, imagens, relatórios exportados, arquivos de backup. Estes dados têm valor direto para o usuário e sua perda seria crítica.

Salvamentos de jogos e estado da aplicação

Salvamentos de jogos, arquivos de estado da aplicação, projetos exportados — tudo que o usuário espera restaurar após reinstalar a aplicação. No entanto, para dados críticos, recomenda-se usar adicionalmente iCloud Key-Value Storage ou Core Data com sincronização iCloud.

Tipo de dadoAdequado para DocumentsAlternativa
PDF e documentos de textoSim
Cache de imagensNãoCaches Directory
Salvamentos de jogosSimiCloud KVS
Logs e dados de depuraçãoNãoCaches ou tmp
Relatórios exportadosSim

O critério chave: se os dados podem ser baixados novamente da rede ou recriados — o lugar deles é em Caches, não em Documents. Cada gigabyte em Documents é um gigabyte no backup iCloud do usuário.

Backup e sincronização

iOS inclui automaticamente o conteúdo de Documents Directory nos backups quando o dispositivo é conectado ao iTunes ou ao sincronizar com iCloud. Este comportamento não pode ser desativado ao nível do diretório — apenas por arquivo através do atributo NSURLIsExcludedFromBackupKey.

A partir do iOS 5.0, a Apple começou a rejeitar aplicações que armazenam grandes volumes de dados recuperáveis em Documents. A recomendação da Apple: arquivos que podem ser baixados novamente devem ser armazenados em Caches Directory com a flag de exclusão de backup.

swift
import Foundation

let documentsURL = FileManager.default
    .urls(for: .documentDirectory, in: .userDomainMask)
    .first!

// Excluir ficheiro do backup iCloud
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true

var fileURL = documentsURL.appendingPathComponent("cached_data.json")
try fileURL.setResourceValues(resourceValues)

A sincronização iCloud funciona através de NSUbiquitousContainer se a aplicação usar iCloud Documents. Neste caso, os arquivos de Documents Directory são automaticamente sincronizados entre os dispositivos do usuário. Para aplicações sem iCloud, a sincronização é limitada ao backup.

Documents Directory vs Caches Directory

A diferença entre Documents e Caches é um dos equívocos mais comuns entre desenvolvedores iOS iniciantes. A principal diferença: o sistema pode excluir arquivos de Caches a qualquer momento para liberar espaço, mas nunca toca em Documents sem o conhecimento do usuário.

CaracterísticaDocuments DirectoryCaches Directory
Backup iCloudSim (por padrão)Não
Exclusão pelo sistemaNuncaQuando falta espaço
iTunes File SharingSim (com flag ativada)Não
FinalidadeDados do usuárioCache, dados temporários
Recuperação de dadosRequer restauraçãoPode ser baixado novamente

De acordo com a Apple Developer Documentation (2024), o uso inadequado de Documents Directory é uma das razões comuns para rejeição de aplicações durante a revisão: se uma aplicação armazena mais de alguns megabytes de dados recuperáveis em Documents, a Apple recomenda movê-los para Caches ou aplicar NSURLIsExcludedFromBackupKey.

Uma regra prática: se o usuário ficaria chateado ao perder o arquivo — armazene-o em Documents. Se o arquivo pode ser baixado novamente ou regenerado — armazene-o em Caches.

Melhores práticas para trabalhar com Documents

Desenvolvedores iOS experientes desenvolveram várias regras que ajudam a evitar problemas com Documents Directory em todas as fases do ciclo de vida da aplicação — desde o desenvolvimento até a publicação na App Store.

Monitoramento do tamanho do diretório

Regularmente verifique o tamanho de Documents Directory através de FileManager.enumerator(at:includingPropertiesForKeys:). Se o tamanho exceder 100 MB para dados não pertencentes ao usuário — é motivo para reconsiderar a arquitetura de armazenamento.

Exclusão de arquivos recuperáveis do backup

Para quaisquer arquivos que possam ser baixados novamente, defina isExcludedFromBackup = true. Isso reduz a carga no armazenamento iCloud do usuário e diminui o risco de rejeição na App Review.

Migração durante atualizações

Ao alterar o formato de dados em Documents, planeie a migração: não exclua arquivos antigos até ter certeza de que os novos foram criados corretamente. Use subdiretórios específicos de versão.

swift
import Foundation

let documentsURL = FileManager.default
    .urls(for: .documentDirectory, in: .userDomainMask)
    .first!

let versionDir = documentsURL.appendingPathComponent("v2")
try FileManager.default.createDirectory(
    at: versionDir,
    withIntermediateDirectories: true
)

Seguir estas práticas reduz o risco de perda de dados do usuário, diminui o tamanho do backup iCloud e simplifica a revisão na App Store.

Perguntas frequentes

Um usuário pode aceder a Documents Directory sem iTunes?

Sim, através de Files — a aplicação integrada do iOS a partir da versão 11. Quando a chave UIFileSharingEnabled está ativada no Info.plist, o conteúdo de Documents Directory aparece na aplicação Ficheiros na secção "No meu iPhone". O usuário pode visualizar, copiar e excluir arquivos.

O que acontece ao Documents Directory quando a aplicação é eliminada?

Toda a sandbox da aplicação, incluindo Documents Directory, Caches, tmp e Library, é completamente removida do dispositivo. Os backups no iCloud são mantidos até à restauração ou eliminação manual. Ao reinstalar, a aplicação começa com uma sandbox limpa.

Como verificar o tamanho de Documents Directory no código?

Use FileManager.enumerator para percorrer todos os arquivos no diretório e somar os seus tamanhos. Para cada arquivo, obtenha o atributo .fileSize através de resourceValues(forKeys:). Alternativamente, use URLResourceKey.fileSizeKey e .directoryEnumerationResults.

Posso armazenar uma base de dados Core Data SQLite em Documents?

Por padrão, o Core Data cria o ficheiro SQLite em Library/Application Support, não em Documents. Mover a base de dados para Documents não é recomendado — ela será incluída no iTunes File Sharing e o usuário pode excluí-la ou modificá-la acidentalmente. A exceção é se a aplicação der explicitamente ao usuário acesso aos dados através de Core Data.

O que é UIFileSharingEnabled e como ativá-lo?

UIFileSharingEnabled (Application supports iTunes file sharing) é uma chave booleana no Info.plist. Quando definida como YES, os usuários podem copiar arquivos de Documents Directory através do iTunes e Files. Adicione a chave ao Info.plist: UIFileSharingEnabled = YES. Ative-a apenas se a aplicação realmente criar documentos do usuário.

Resumo

  • Documents Directory é o local principal para dados do usuário numa aplicação iOS que devem persistir e ser copiados.
  • O caminho para o diretório é obtido através de FileManager.urls(for: .documentDirectory) em Swift ou NSSearchPathForDirectoriesInDomains em Objective-C.
  • Todos os arquivos de Documents são incluídos nos backups do iCloud e iTunes por padrão — use isExcludedFromBackup para exclusão.
  • O sistema não exclui automaticamente arquivos de Documents, ao contrário de Caches Directory.
  • Para dados recuperáveis (cache, arquivos temporários) use Caches Directory, não Documents.
  • A chave UIFileSharingEnabled fornece acesso a Documents através do iTunes e da aplicação Ficheiros — use-a conscientemente.
  • Monitore regularmente o tamanho de Documents Directory: exceder 100 MB para dados não críticos é um problema arquitetónico.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também