从磁盘加载文件的问题

时间:2016-10-23 04:43:44

标签: swift swift3 nsfilemanager nsdocumentdirectory

好的,所以这个让我挠了一会儿。

我有一个写到磁盘的png文件。我通过以下方式获取数据:

let data = UIImagePNGRepresentation(scaledImage!)
let filename = getDocumentsDirectory().appendingPathComponent("\(record.uid!).png")

我试试看,一切似乎都有效。生成的文件名是:

file:///var/mobile/Containers/Data/Application/C6B796E8-2DB6-45A4-9B18-EF808B8CA3CA/Documents/580420d51800cd826a7e217c.png

当我尝试从磁盘加载该图像时出现问题。

当我得到文档目录中所有文件的列表时,我得到:

[file:///private/var/mobile/Containers/Data/Application/C6B796E8-2DB6-45A4-9B18-EF808B8CA3CA/Documents/580420d51800cd826a7e217c.png]

我能看到的唯一区别是私人'文件路径的一部分。当我尝试使用文件路径检查文件是否存在时,我会附加文件名(没有私有部分的文件),我得到了错误。

我错过了什么?

1 个答案:

答案 0 :(得分:-1)

  

Swift 3/4代码

我们假设方法getDocumentsDirectory()定义如下

func getDocumentsDirectory() -> URL {
        let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
        let documentsDirectory = paths[0]
        return documentsDirectory
}

为了保存图像

let data = UIImagePNGRepresentation(scaledImage!)
let filename = getDocumentsDirectory().appendingPathComponent("\(record.uid!).png")
try? data?.write(to: filename)

您的图像保存在文档目录

现在为了加载它

let imagePath = getDocumentsDirectory().appendingPathComponent("\(record.uid!).png").path

let fileManager = FileManager.default
if fileManager.fileExists(atPath: imagePath){
    print("Image Present")
    //load it in some imageView
}else {
    print("No Image")
}