14.2 使用FileManager进行文件操作
FileManager 是 iOS 中用于与文件系统交互的核心类。你可以使用它来创建、读取、写入、删除和移动文件和目录。它提供了访问文件系统功能的强大而灵活的接口。让我们深入了解如何使用它!🎉
获取 FileManager 实例
首先,你需要获取一个 FileManager 的实例。你可以使用 default 属性来获取一个共享的 FileManager 实例。这个实例适用于大多数常见的文件系统操作。
swift
let fileManager = FileManager.default创建目录
你可以使用 createDirectory(at:withIntermediateDirectories:attributes:) 方法来创建新的目录。withIntermediateDirectories 参数允许你创建路径中的所有中间目录,如果它们不存在的话。
swift
let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
let newDirectoryURL = documentsDirectory.appendingPathComponent("MyNewDirectory")
do {
try fileManager.createDirectory(at: newDirectoryURL, withIntermediateDirectories: true, attributes: nil)
print("目录创建成功!")
} catch {
print("创建目录失败:\(error)")
}检查文件或目录是否存在
使用 fileExists(atPath:) 方法可以检查文件或目录是否存在。这对于避免覆盖现有文件或在尝试读取文件之前验证其存在非常有用。
swift
let filePath = documentsDirectory.appendingPathComponent("MyFile.txt").path
if fileManager.fileExists(atPath: filePath) {
print("文件存在!")
} else {
print("文件不存在!")
}复制文件或目录
copyItem(at:to:) 方法允许你复制文件或目录。你需要提供源路径和目标路径。确保目标路径不存在,否则操作会失败。
swift
let sourceURL = documentsDirectory.appendingPathComponent("SourceFile.txt")
let destinationURL = documentsDirectory.appendingPathComponent("CopiedFile.txt")
do {
try fileManager.copyItem(at: sourceURL, to: destinationURL)
print("文件复制成功!")
} catch {
print("文件复制失败:\(error)")
}移动文件或目录
moveItem(at:to:) 方法用于移动文件或目录。与复制类似,你需要提供源路径和目标路径。如果目标路径已存在,操作通常会失败。
swift
let oldURL = documentsDirectory.appendingPathComponent("OldFile.txt")
let newURL = documentsDirectory.appendingPathComponent("NewFile.txt")
do {
try fileManager.moveItem(at: oldURL, to: newURL)
print("文件移动成功!")
} catch {
print("文件移动失败:\(error)")
}删除文件或目录
使用 removeItem(at:) 方法可以删除文件或目录。请务必小心使用此方法,因为删除是不可逆的!
swift
let fileToDeleteURL = documentsDirectory.appendingPathComponent("FileToDelete.txt")
do {
try fileManager.removeItem(at: fileToDeleteURL)
print("文件删除成功!")
} catch {
print("文件删除失败:\(error)")
}获取目录内容
你可以使用 contentsOfDirectory(at:includingPropertiesForKeys:options:) 方法来获取目录中的文件和子目录列表。这对于浏览文件系统非常有用。
swift
do {
let contents = try fileManager.contentsOfDirectory(at: documentsDirectory, includingPropertiesForKeys: nil, options: .skipsHiddenFiles)
for item in contents {
print("找到:\(item.lastPathComponent)")
}
} catch {
print("获取目录内容失败:\(error)")
}FileManager 是一个功能强大的工具,可以让你轻松地管理 iOS 应用中的文件和目录。通过掌握这些基本操作,你可以构建更健壮和灵活的应用。🚀