如何删除我的应用程序文档目录中的文件?
Posted
技术标签:
【中文标题】如何删除我的应用程序文档目录中的文件?【英文标题】:How do I delete a file in my apps documents directory? 【发布时间】:2010-02-05 03:47:48 【问题描述】:给定路径[[self documentsDirectory] stringByAppendingPathComponent:@"myFiles/aFile.txt"]
的文件,我
【问题讨论】:
【参考方案1】:NSFileManager 是一个非常方便的工具:
[[NSFileManager defaultManager] removeItemAtPath: pathToFile error: &error];
【讨论】:
removeItemAtURL:error: 是另一个有用的 NSFileManager 方法。我发现 URL 通常比路径更容易使用。【参考方案2】:在 Swift 3 中,FileManager
有一个名为 removeItem(at:)
的方法。 removeItem(at:)
有以下声明:
func removeItem(at URL: URL) throws
删除指定 URL 处的文件或目录。
下面的代码片段展示了如何使用removeItem(at:)
删除文件:
do
try FileManager.default.removeItem(at: fileUrl)
catch
print("Could not delete file: \(error)")
作为一个完整的例子,下面的UIViewController
子类实现展示了如何将一个文件从应用程序包复制到文档目录中的特定url,删除文档目录中特定url的文件并检查文件是否存在在文档目录中的特定 url:
import UIKit
class ViewController: UIViewController
@IBAction func copyFile(_ sender: UIButton)
// Get app bundle file url
guard let bundleFileUrl = Bundle.main.url(forResource: "Movie", withExtension: "mov") else return
// Create a destination url in document directory for file
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else return
let documentDirectoryFileUrl = documentsDirectory.appendingPathComponent("Movie.mov")
// Copy bundle file to document directory
if !FileManager.default.fileExists(atPath: documentDirectoryFileUrl.path)
do
try FileManager.default.copyItem(at: bundleFileUrl, to: documentDirectoryFileUrl)
catch
print("Could not copy file: \(error)")
@IBAction func deleteFile(_ sender: UIButton)
// Get destination url in document directory for file
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else return
let documentDirectoryFileUrl = documentsDirectory.appendingPathComponent("Movie.mov")
// Delete file in document directory
if FileManager.default.fileExists(atPath: documentDirectoryFileUrl.path)
do
try FileManager.default.removeItem(at: documentDirectoryFileUrl)
catch
print("Could not delete file: \(error)")
@IBAction func checkIfFileExist(_ sender: UIButton)
// Get destination url in document directory for file
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else return
let outputUrl = documentsDirectory.appendingPathComponent("Movie.mov")
// Print if file exists in document directory or not
FileManager.default.fileExists(atPath: outputUrl.path) ? print("File exists") : print("File does not exist")
【讨论】:
【参考方案3】:对于 Swift 3.x 和 Xcode 8.x
itemName - 将文件存储在文档目录中的名称 文件扩展名-文件的扩展名func removeItemForDocument(itemName:String, fileExtension: String)
let fileManager = FileManager.default
let NSDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
let NSUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
let paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)
guard let dirPath = paths.first else
return
let filePath = "\(dirPath)/\(itemName).\(fileExtension)"
do
try fileManager.removeItem(atPath: filePath)
catch let error as NSError
print(error.debugDescription)
【讨论】:
以上是关于如何删除我的应用程序文档目录中的文件?的主要内容,如果未能解决你的问题,请参考以下文章