Swift 文件系统操作完全指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swift 文件系统操作入门



iOS 和 macOS 开发经常需要与设备的文件系统进行交互。无论是保存用户数据、缓存图片还是导出文档,掌握文件和文件夹操作是每位 Swift 开发者的必备技能。本文将详细讲解如何使用 FileManager、URL 和 Data 执行所有基本的文件系统操作。



我们将介绍文件的创建、读取、写入和删除,以及目录导航。所有代码示例均使用 Swift 5 编写,适用于 iOS 和 macOS 项目。



核心组件:FileManager 和 URL



在 Swift 中,用于文件系统操作的核心类是 FileManager。它提供了管理文件、目录及其属性的方法。路径使用 URL 结构体指定,这是比字符串更安全、更现代的替代方案。



获取标准目录



首先需要知道如何获取标准系统目录的路径。对于 iOS,通常是 Documents、Library/Caches 和 tmp。



import Foundation

let fileManager = FileManager.default

// Documents 目录guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { fatalError("无法获取 Documents 目录")}print("Documents: \\(documentsURL.path)")

// Caches 目录guard let cachesURL = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first else { fatalError("无法获取 Caches 目录")}print("Caches: \\(cachesURL.path)")

// 临时目录let tempURL = fileManager.temporaryDirectoryprint("Temp: \\(tempURL.path)")


创建和写入文件



在 Swift 中创建文件包括创建路径和写入数据两个步骤。我们来看两种主要方法。



写入文本数据



func createTextFile() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let fileURL = documentsURL.appendingPathComponent("example.txt")    let content = "你好,世界!这是一个测试文件。"        do {        try content.write(to: fileURL, atomically: true, encoding: .utf8)        print("文件已成功创建于路径:\\(fileURL.path)")    } catch {        print("文件写入错误:\\(error.localizedDescription)")    }}


写入二进制数据(图片、归档)



func createBinaryFile() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let fileURL = documentsURL.appendingPathComponent("data.bin")    let data = Data([0x48, 0x65, 0x6C, 0x6C, 0x6F]) // "Hello" 的十六进制表示        do {        try data.write(to: fileURL, options: .atomic)        print("二进制文件已创建")    } catch {        print("错误:\\(error)")    }}


创建目录



func createDirectory() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let newDirURL = documentsURL.appendingPathComponent("MyFolder")        do {        try fileManager.createDirectory(at: newDirURL, withIntermediateDirectories: true, attributes: nil)        print("目录已创建:\\(newDirURL.path)")    } catch {        print("目录创建错误:\\(error)")    }}


读取和检查文件



文件创建后,需要能够读取它们并检查其是否存在。



检查文件是否存在



func fileExists(at url: URL) -> Bool {    return fileMan                

博客

书籍推荐