使用覆盖将图像保存到文档目录

Posted

技术标签:

【中文标题】使用覆盖将图像保存到文档目录【英文标题】:Saving image to documents directory with overwrite 【发布时间】:2019-04-15 16:50:37 【问题描述】:

我正在使用设备相机拍摄照片并将其以特定文件名保存到 Documents 目录中。但是,如果已存在同名文件,则不会保存该文件。我怎样才能简单地覆盖同名文件,或者如果它确实存在,先删除它?我更喜欢第一个选项。

let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!

// Create the destination file URL for saving
let fileURL = documentsDirectory.appendingPathComponent(photoFilename)

if let data = image.jpegData(compressionQuality: 1.0),
    !FileManager.default.fileExists(atPath: fileURL.path) 
    do 
        // Write the image data
        try data.write(to: fileURL)
     catch 
        let alert = UIAlertController(title: "OOPS!", message: "Couldnt save the image!", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
        self.present(alert, animated: true)
    

print("not saved")

【问题讨论】:

【参考方案1】:

write(to 默认覆盖数据,但通过检查文件是否存在来阻止它。

只需删除检查

let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!

// Create the destination file URL for saving
let fileURL = documentsDirectory.appendingPathComponent(photoFilename)

if let data = image.jpegData(compressionQuality: 1.0) 
    do 
        // Write the image data
        try data.write(to: fileURL)
     catch 
        let alert = UIAlertController(title: "OOPS!", message: "Couldnt save the image!", preferredStyle: .alert)
         alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
         self.present(alert, animated: true)
    
 else 
    print("not saved")

【讨论】:

以上是关于使用覆盖将图像保存到文档目录的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHAsset 获取图像 URL?是不是可以使用 PHAsset URL 将图像保存到文档目录?

Python PIL将图像保存在目录中,如果名称相同,则不覆盖

加载保存到文档目录的图像只能工作一次,然后永远不会再次加载

将相机捕获的图像保存到ios中的文档目录中[重复]

使用 exif 将原始图像从 ALAsset 对象写入文档目录文件夹

如何使用 writeToFile 将图像保存在文档目录中?