Swift 文件系统操作:完整指南
文件和目录管理是 iOS 和 macOS 应用开发中的关键任务之一。在 Swift 中,用于文件系统操作的主要工具是 FileManager 类。本文将介绍如何创建、读取、写入、移动和删除文件,以及如何高效管理目录。所有代码示例均使用 Swift 编写,适用于 iOS 和 macOS 项目。
FileManager 基础
FileManager 是一个单例,提供与文件系统交互的接口。使用它只需获取实例:
let fileManager = FileManager.default该类几乎可以执行任何操作:检查文件是否存在、获取属性、创建文件夹等。需要注意的是,所有文件系统操作都可能抛出错误,因此我们将使用 do-catch 结构。
目录操作
在创建文件之前,需要学会管理文件夹。下面介绍目录的基本操作。
检查目录是否存在
let documentsPath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!let newFolderPath = documentsPath.appendingPathComponent("MyFolder")
if fileManager.fileExists(atPath: newFolderPath.path) { print("目录存在")} else { print("目录未找到")}创建目录
do { try fileManager.createDirectory(at: newFolderPath, withIntermediateDirectories: true, attributes: nil) print("目录已创建")} catch { print("创建目录错误: \\(error.localizedDescription)")}withIntermediateDirectories 参数允许自动创建路径中所有缺失的文件夹。例如,如果要创建 Folder1/Folder2/Folder3,而 Folder1 不存在——它会被自动创建。
获取目录内容列表
do { let contents = try fileManager.contentsOfDirectory(at: documentsPath, includingPropertiesForKeys: nil) for item in contents { print("找到元素: \\(item.lastPathComponent)") }} catch { print("读取目录错误: \\(error)")}文件读写
在 Swift 中有多种读写数据的方法。下面介绍其中主要的几种。
写入文本文件
let text = "你好,世界!这是一个测试文件。"let filePath = documentsPath.appendingPathComponent("test.txt")
do { try text.write(to: filePath, atomically: true, encoding: .utf8) print("文件写入成功")} catch { print("写入错误: \\(error)")}读取文本文件
do { let savedText = try String(contentsOf: filePath, encoding: .utf8) print("文件内容: \\(savedText)")} catch { print("读取错误: \\(error)")}处理二进制数据
// 写入let data = "Binary data example".data(using: .utf8)!let binaryPath = documentsPath.appendingPathComponent("data.bin")
do { try data.write(to: binaryPath, options: .atomic) print("二进制数据已写入")} catch { print("数据写入错误: \\(error)")}
// 读取do { let loadedData = try Data(contentsOf: binaryPath) print("读取了 \\(loadedData.count) 字节")} catch { print("数据读取错误: \\(error)")}移动、复制和删除文件
文件管理不仅包括创建,还包括移动、复制和删除操作。