【问题标题】:Issue with loading file from disk从磁盘加载文件的问题
【发布时间】:2017-03-05 02:52:17
【问题描述】:

好吧,这个让我摸不着头脑。

我有一个 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]

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

我错过了什么?

【问题讨论】:

  • 对你有帮助吗,对我来说效果很好

标签: swift swift3 nsfilemanager nsdocumentdirectory


【解决方案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")
}

【讨论】:

  • 你没有抓住重点。打印出代码中的 url,你会看到问题:在 imagePath 中没有前导“private”。
  • OP 没有发布他的 getDocumentsDirectory() 函数的主体,所以我假设相同。我的网址是:在设备上测试--文件名的打印描述:"///var/mobile/Containers/Data/Application/46B10A6C-43EE-4D11-83E5-88B6ADF1E646/Documents/testImage.png" imagePath 的打印描述:"/var/mobile/Containers/Data/Application/46B10A6C-43EE-4D11-83E5-88B6ADF1E646/Documents/testImage.png" 所以,我相信getDocumentsDirectory() 函数的主体存在一些问题,它在获取图像回来。这是一个假设。
猜你喜欢
  • 2019-05-10
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 2011-07-08
相关资源
最近更新 更多