Trabalhando com o sistema de arquivos em Swift: guia prático para iOS/macOS

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que trabalhar com o sistema de arquivos em Swift é importante

Qualquer aplicativo iOS ou macOS, mais cedo ou mais tarde, enfrenta a necessidade de salvar dados no dispositivo do usuário. Seja para cache de imagens, download de documentos ou salvamento de configurações — trabalhar com o sistema de arquivos em Swift é uma habilidade fundamental para todo desenvolvedor. Neste artigo, vamos explorar na prática como usar FileManager, trabalhar com diretórios, ler e escrever arquivos, além de gerenciar seus atributos. Você receberá exemplos de código prontos que podem ser aplicados imediatamente no seu projeto.



Ferramentas principais: FileManager e URL

A classe central para trabalhar com o sistema de arquivos em Swift é FileManager. Ela fornece uma interface unificada para interagir com o sistema de arquivos tanto no iOS quanto no macOS. O segundo componente chave é URL, que é usado para especificar caminhos para arquivos e diretórios.



Obtendo diretórios padrão

A primeira coisa que você precisa saber é como obter os caminhos para os diretórios do sistema: Documents, Library, Caches e Temporary. Veja como fazer:



import Foundation

let fileManager = FileManager.default

// Diretório Documents — para dados do usuárioguard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { fatalError("Falha ao obter o diretório Documents")}print("Documents: \\(documentsURL.path)")

// Diretório Caches — para dados temporários em cachelet cachesURL = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!print("Caches: \\(cachesURL.path)")

// Diretório temporário — para arquivos que podem ser excluídos a qualquer momentolet tempURL = fileManager.temporaryDirectoryprint("Temp: \\(tempURL.path)")


Importante: No iOS, um aplicativo só pode gravar dados em sua própria sandbox. O acesso a arquivos do sistema ou arquivos de outros aplicativos é proibido.



Criação, leitura e escrita de arquivos

Agora vamos para as operações práticas. Vamos ver como criar arquivos, escrever dados neles e lê-los de volta.



Escrevendo dados em um arquivo

A maneira mais simples é usar o método write(to:) para strings ou Data. Mas para maior confiabilidade, sempre use tratamento de erros:



let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!let fileURL = documentsURL.appendingPathComponent("example.txt")

let content = "Hello, Swift! Este é um arquivo de teste."

do { try content.write(to: fileURL, atomically: true, encoding: .utf8) print("Arquivo criado com sucesso: \\(fileURL.lastPathComponent)")} catch { print("Erro ao escrever: \\(error.localizedDescription)")}


Lendo dados de um arquivo

A leitura é feita de forma similar — usando o construtor String(contentsOf:) ou métodos de Data:



do {    let savedContent = try String(contentsOf: fileURL, encoding: .utf8)    print("Conteúdo do arquivo: \\(savedContent)")} catch {    print("Erro ao ler: \\(error.localizedDescription)")}


Trabalhando com dados binários (imagens, arquivos)

Para arquivos binários, use o tipo Data:



// Escrevendo dados binárioslet imageData = UIImage(named: "example.png")?.pngData()let imageURL = documentsURL.appendingPathComponent("image.png")

do { try imageData?.write(to: imageURL)} catch { print("Erro ao escrever imagem: \\(error)")}

// Lendo dados bináriosif let loadedData = try? Data(contentsOf: imageURL) { let loadedImage = UIImage(data: loadedData) print("Imagem carregada: \\(loadedImage != nil)")}


Gerenciamento de diretórios e arquivos

Apenas escrever e ler não é suficiente. Frequentemente é necessário criar subdiretórios, mover, copiar ou excluir

Blogs

Book Recommendations