当前位置: 首页 > 面试题库 >

无法在tmp目录中保存文件

董小林
2023-03-14
问题内容

我有此功能可以将图像保存在tmp文件夹中

private func saveImageToTempFolder(image: UIImage, withName name: String) {

    if let data = UIImageJPEGRepresentation(image, 1) {
        let tempDirectoryURL = NSURL.fileURLWithPath(NSTemporaryDirectory(), isDirectory: true)
        let targetURL = tempDirectoryURL.URLByAppendingPathComponent("\(name).jpg").absoluteString
        print("target: \(targetURL)")
        data.writeToFile(targetURL, atomically: true)
    }
}

但是,当我打开应用程序的temp文件夹时,它是空的。将图像保存在temp文件夹中,我做错了什么?


问题答案:

absoluteString不是获取的文件路径的正确方法NSURL,请path改用:

let targetPath = tempDirectoryURL.URLByAppendingPathComponent("\(name).jpg").path!
data.writeToFile(targetPath, atomically: true)

或者 更好的是, 仅使用URL:

let targetURL = tempDirectoryURL.URLByAppendingPathComponent("\(name).jpg")
data.writeToURL(targetURL, atomically: true)

更好的是,使用writeToURL(url: options) throws 并检查成功或失败:

do {
    try data.writeToURL(targetURL, options: [])
} catch let error as NSError {
    print("Could not write file", error.localizedDescription)
}

Swift 3/4更新:

let targetURL = tempDirectoryURL.appendingPathComponent("\(name).jpg")
do {
    try data.write(to: targetURL)
} catch {
    print("Could not write file", error.localizedDescription)
}


 类似资料:
  • 我正在尝试访问。我已经使用ebconfig将json文件下载到/tmp/目录,以在S3上存储私钥。 但它给了我以下错误 错误:EACCES:权限被拒绝,打开“/tmp/firebaseadminsdk”。json’ 文件中有一段说 第二个条目使用S3Auth身份验证方法从指定的URL下载私钥,并将其保存到/etc/pki/tls/certs/server。钥匙然后,代理服务器可以从此位置读取私钥,

  • 我无法在缓存目录中写入文件 使用context.filesdir(但不使用context.cachedir)可以很好地工作。我正在使用libaums库读取USB文件。

  • 我想上传文件并保存到特定的目录。而且我对文件的概念是陌生的。当我从我的页面上传文件时,它们保存在另一个目录(C:\ Users \ ROOTCP ~ 1 \ AppData \ Local \ Temp \ multipartbody 989135345617811478 astemporary file)而不是指定的目录。我不能设置它。请帮我找到解决办法。提前感谢所有的帮助。 上传的文件为什么保

  • Im使用spark-2.1.1-bin-hadoop-2.7独立模式(由4个工作线程组成的集群,120g内存,总共32核),尽管我定义了spark。地方的dirconf-param要写入到/opt,spark worker将继续写入/tmpdir,例如/tmp/spark-e071ae1b-1970-47b2-bfec-19ca66693768 有没有办法告诉spark worker不要写入tmp

  • 我用的是Flume 1.7.0和HDFS水槽。我将Flume配置为将数据放在HDFS的日期目录中,这样当新的一天到来时,它会自动更改目录。问题是我把flume设置为按文件大小(240MB)滚动,但是flume离开了。tmp文件,当目录改变时。似乎flume改变到新的一天的目录,而没有关闭未完成的文件(小于240MB)。 例如。如果我启动3个水槽代理。然后当水槽代理更改为新目录20180411时,目