Trabalhando com o sistema de arquivos em Swift: Guia completo

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

Trabalhando com o sistema de arquivos em Swift: Guia completo



Gerenciar arquivos e diretórios é uma das tarefas principais no desenvolvimento de aplicativos para iOS e macOS. Em Swift, a principal ferramenta para trabalhar com o sistema de arquivos é a classe FileManager. Neste artigo, vamos abordar como criar, ler, escrever, mover e excluir arquivos, bem como gerenciar diretórios de forma eficiente. Todos os exemplos de código estão escritos em Swift e são adequados para projetos iOS e macOS.



Fundamentos do FileManager



FileManager é um singleton que fornece uma interface para interagir com o sistema de arquivos. Para usá-lo, basta obter uma instância:



let fileManager = FileManager.default


A classe permite realizar praticamente qualquer operação: verificar a existência de arquivos, obter atributos, criar pastas e muito mais. É importante lembrar que todas as operações de manipulação do sistema de arquivos podem lançar erros, por isso usaremos a construção do-catch.



Trabalhando com diretórios



Antes de criar arquivos, é preciso aprender a gerenciar pastas. Vamos considerar as principais operações com diretórios.



Verificando a existência de um diretório



let documentsPath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!let newFolderPath = documentsPath.appendingPathComponent("MyFolder")

if fileManager.fileExists(atPath: newFolderPath.path) { print("Diretório existe")} else { print("Diretório não encontrado")}


Criando um diretório



do {    try fileManager.createDirectory(at: newFolderPath,                                     withIntermediateDirectories: true,                                     attributes: nil)    print("Diretório criado")} catch {    print("Erro ao criar diretório: \\(error.localizedDescription)")}


O parâmetro withIntermediateDirectories permite criar automaticamente todas as pastas ausentes no caminho. Por exemplo, se você quiser criar Folder1/Folder2/Folder3 e Folder1 não existir, ele será criado automaticamente.



Obtendo a lista de conteúdo de um diretório



do {    let contents = try fileManager.contentsOfDirectory(at: documentsPath,                                                        includingPropertiesForKeys: nil)    for item in contents {        print("Elemento encontrado: \\(item.lastPathComponent)")    }} catch {    print("Erro ao ler diretório: \\(error)")}


Leitura e escrita de arquivos



Em Swift, existem várias maneiras de escrever e ler dados. Vamos considerar as principais.



Escrevendo um arquivo de texto



let text = "Olá, mundo! Este é um arquivo de teste."let filePath = documentsPath.appendingPathComponent("test.txt")

do { try text.write(to: filePath, atomically: true, encoding: .utf8) print("Arquivo escrito com sucesso")} catch { print("Erro ao escrever: \\(error)")}


Lendo um arquivo de texto



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


Trabalhando com dados binários



// Escritalet data = "Binary data example".data(using: .utf8)!let binaryPath = documentsPath.appendingPathComponent("data.bin")

do { try data.write(to: binaryPath, options: .atomic) print("Dados binários escritos")} catch { print("Erro ao escrever dados: \\(error)")}

// Leiturado { let loadedData = try Data(contentsOf: binaryPath) print("Lidos \\(loadedData.count) bytes")} catch { print("Erro ao ler dados: \\(error)")}


Movendo, copiando e excluindo arquivos



Gerenciar arquivos inclui não apenas criar, mas também mover

Blogs

Book Recommendations