在ios中使用swift删除文件

Posted

技术标签:

【中文标题】在ios中使用swift删除文件【英文标题】:delete a file using swift in ios 【发布时间】:2017-02-04 14:18:46 【问题描述】:
func getDocumentsDirectory() -> URL 
    let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
    let documentsDirectory = paths[0]
    return documentsDirectory

很简单,我使用该函数获取我的文件名。它现在正确返回,我如何使用 Swift 3 删除这个文件? 我怎样才能像UIImageJPEGRepresentation一样读回图像?

let image_data = UIImageJPEGRepresentation(self.commons.correctlyOrientedImage(image: self.imageSelected.image!),0.5)

我做了跟踪,但它不起作用

let filename = getDocumentsDirectory().appendingPathComponent("l.png")   let

fileManager = FileManager.default var filePath = 文件名 // 检查文件是否存在

                if fileManager.fileExists(atPath: filePath.absoluteString) 
                    // Delete file
                    try fileManager.removeItem(atPath: filePath.absoluteString)
                 else 
                    print("File does not exist")
                

我这样保存文件

let filename =    getDocumentsDirectory().appendingPathComponent("COPY111.PNG")
        try? image_data?.write(to: filename)

但我无法从下面提供的答案中删除它

【问题讨论】:

【参考方案1】:

删除文件有几行:

do 
    try FileManager.default.removeItem(at: fileName)
 catch let error as NSError 
    print("Error: \(error.domain)")

下面是设置它为 imageView 的代码:

if let image = UIImage(contentsOfFile: fileName) 
   imageView.image = image

【讨论】:

【参考方案2】:

试试这个。希望它会工作。要删除文件

    let fileNameToDelete = "myFileName.txt"
    var filePath = ""

    // Fine documents directory on device
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let documentDirectory = paths[0]
    filePath = documentDirectory.appendingFormat("/" + fileNameToDelete)

    do 
        let fileManager = FileManager.default

        // Check if file exists
        if fileManager.fileExists(atPath: filePath) 
            // Delete file
            try fileManager.removeItem(atPath: filePath)
         else 
            print("File does not exist")
        

    
    catch let error as NSError 
        print("An error took place: \(error)")
    

来源:http://swiftdeveloperblog.com/code-examples/delete-file-example-in-swift/

对于图片加载

let imageData = UIImageJPEGRepresentation(image)!  
let docDir = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)  
let imageURL = docDir.appendingPathComponent("tmp.jpeg")  
try! imageData.write(to: imageURL)  

let newImage = UIImage(contentsOfFile: imageURL.path)! 

【讨论】:

我编辑了我的第一篇文章,我做了你的解决方案,但我得到文件不存在 我得到文件路径,但删除时说文件不存在 filePath /var/mobile/Containers/Data/Application/D5FA0123-65A2-470A-A817-8871F984CE90/Documents/profile-FFCEBEA9-2F8D -49E2-9A09-2BF87BD0B542--A9636AF4-350D-4D72-A4BD-E4F2B183F4BB.png filePath 文件不存在

以上是关于在ios中使用swift删除文件的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS swift 应用程序中重写或删除现有的 .png 文件

如何使用 swift 4.0 语言删除文件内容

Swift 从特定文档目录位置删除所有文件

在 iOS/swift 中上传图像时如何删除裁剪选项

如何删除空白存档的Xcode文件(swift4)

如何在iOS Swift 3中从键盘中删除更改语言键按钮