使用Swift删除iOS目录中的文件

使用Swift删除iOS目录中的文件,ios,swift,Ios,Swift,我在应用程序中下载了一些PDF文件,希望在关闭应用程序时删除这些文件 由于某些原因,它不起作用: 创建文件: let reference = "test.pdf" let RequestURL = "http://xx/_PROJEKTE/xx\(self.reference)" let ChartURL = NSURL(string: RequestURL) //download file let documentsUrl = NSFileManager.defaultManage

我在应用程序中下载了一些PDF文件,希望在关闭应用程序时删除这些文件

由于某些原因,它不起作用:

创建文件:

let reference = "test.pdf"    
let RequestURL = "http://xx/_PROJEKTE/xx\(self.reference)"
let ChartURL = NSURL(string: RequestURL)

//download file
let documentsUrl =  NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first! as NSURL
let destinationUrl = documentsUrl.URLByAppendingPathComponent(ChartURL!.lastPathComponent!)
if NSFileManager().fileExistsAtPath(destinationUrl.path!) {
    print("The file already exists at path")
} else {
    //  if the file doesn't exist
    //  just download the data from your url
    if let ChartDataFromUrl = NSData(contentsOfURL: ChartURL!){
        // after downloading your data you need to save it to your destination url
        if ChartDataFromUrl.writeToURL(destinationUrl, atomically: true) {
            print("file saved")
            print(destinationUrl)
        } else {
            print("error saving file")
        }
    }
}
然后我想调用
test()
函数来删除这些项,如下所示:

func test(){

    let fileManager = NSFileManager.defaultManager()
    let documentsUrl =  NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first! as NSURL

    do {
        let filePaths = try fileManager.contentsOfDirectoryAtPath("\(documentsUrl)")
        for filePath in filePaths {
            try fileManager.removeItemAtPath(NSTemporaryDirectory() + filePath)
        }
    } catch {
        print("Could not clear temp folder: \(error)")
    }
}

我相信你的问题出在这一行:

let filePaths = try fileManager.contentsOfDirectoryAtPath("\(documentsUrl)")
您正在将
contentsOfDirectoryAtPath()
NSURL
一起使用。您可以选择路径字符串或URL,而不是尝试将两者混合使用。要预先清空可能的下一个问题,首选URL。尝试使用
contentsofdirectorynature()
removitemature()


解决上述问题后,您还需要了解另一件奇怪的事情:当您尝试删除时,为什么要使用
NSTemporaryDirectory()
作为文件路径?您正在阅读文档目录,应该使用它。

此代码适合我。我删除了缓存的所有图像

private func test(){

    let fileManager = NSFileManager.defaultManager()
    let documentsUrl =  NSFileManager.defaultManager().URLsForDirectory(.CachesDirectory, inDomains: .UserDomainMask).first! as NSURL
    let documentsPath = documentsUrl.path

    do {
        if let documentPath = documentsPath
        {
            let fileNames = try fileManager.contentsOfDirectoryAtPath("\(documentPath)")
            print("all files in cache: \(fileNames)")
            for fileName in fileNames {

                if (fileName.hasSuffix(".png"))
                {
                    let filePathName = "\(documentPath)/\(fileName)"
                    try fileManager.removeItemAtPath(filePathName)
                }
            }

            let files = try fileManager.contentsOfDirectoryAtPath("\(documentPath)")
            print("all files in cache after deleting images: \(files)")
        }

    } catch {
        print("Could not clear temp folder: \(error)")
    }
}
****更新swift 3****

        let fileManager = FileManager.default
        let documentsUrl =  FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first! as NSURL
        let documentsPath = documentsUrl.path

        do {
            if let documentPath = documentsPath
            {
                let fileNames = try fileManager.contentsOfDirectory(atPath: "\(documentPath)")
                print("all files in cache: \(fileNames)")
                for fileName in fileNames {

                    if (fileName.hasSuffix(".png"))
                    {
                        let filePathName = "\(documentPath)/\(fileName)"
                        try fileManager.removeItem(atPath: filePathName)
                    }
                }

                let files = try fileManager.contentsOfDirectory(atPath: "\(documentPath)")
                print("all files in cache after deleting images: \(files)")
            }

        } catch {
            print("Could not clear temp folder: \(error)")
        }

我怀疑你想考虑使用<代码> .CcExeStords而不是<代码> .DoCuthCords保存和删除这些文件。我确实尝试保存我的文件,但它不工作。你应该明确地阅读然后然后。有很多答案,所以只需使用documents目录,但它们不应该…有没有办法删除“complete CachesDirectory()”?不应该删除文档和库/缓存。如果需要,可以添加和删除文件,但不要删除它们。注意:iOS应该根据需要为您清除Llibrary/Caches。那么我是否理解正确->不要删除CachesDirectory()中存储的文件,iOS将自己“删除”它们?不,我说的是“如果需要,添加并删除它们”。您可以删除Library/Caches目录中的文件(而不是目录本身!),但是如果你不想,你不需要。如果用户的设备空间不足,iOS将始终清除缓存。这取决于您以及您希望应用程序如何运行:)啊,好的,谢谢,那么我需要寻找一种方法来删除其中的“所有PDF:-)!前3行(Swift3)非常棒,帮助我使用CRUD作为录音机/播放器(即录音机)!谢谢完美匹配它的完美工作。也可以使用共享文件夹。感谢所有寻找Swift 4的人:
try?FileManager.default.removietem(at:dest)