将文件保存到自定义文件夹
Posted
技术标签:
【中文标题】将文件保存到自定义文件夹【英文标题】:Save file to custom folder 【发布时间】:2018-09-24 19:57:23 【问题描述】:在 AppDelegate 中,如果不存在,我会在 .documents 中创建隐藏文件夹:
let fileManager = FileManager.default
let path = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
let audioKitFilesFolder = path.appendingPathComponent(".AudioKitFilesFolder")
var isDir : ObjCBool = false
if fileManager.fileExists(atPath: audioKitFilesFolder.absoluteString, isDirectory:&isDir)
if isDir.boolValue
print("file exists and is a directory")
else
print("file exists and is not a directory")
else
do
try fileManager.createDirectory(at: audioKitFilesFolder, withIntermediateDirectories: true, attributes: nil)
catch
print("Can't Create Folder \(error)")
在我的网络 API 中,我有将文件从 web 保存到 .documents 的功能。但我需要将此文件保存到我的隐藏文件夹中。如何为我的 copyItem 方法获取此文件夹的路径?
Newtwork API 函数:
func downloadFile(id: Int, url: URL, fileName: String)
var request = URLRequest(url: url)
URLSession.shared.downloadTask(with: url, completionHandler: location, response, error in
guard let location = location, error == nil else return
do
let fileManager = FileManager.default
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let fileURL = documentsURL.appendingPathComponent(fileName)
try fileManager.copyItem(at: location, to: fileURL)
try self.router.configureParameters(bodyParameters: ["uuid": UserDefaultsHelper.uuid], urlParameters: nil, request: &request)
catch
print(error)
).resume()
URLSession.shared.dataTask(with: request) data, response, error in
if let response = response
print(response)
if let data = data
do
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
catch
print(error)
.resume()
【问题讨论】:
请注意***.com/questions/34135305/… @vadian 对不起,我不明白。这对我有什么帮助?我需要 .documents 文件夹中自定义隐藏文件夹的路径absoluteString
是错误的 API
@vadian 但是我用我的代码创建了文件夹。文件夹存在。现在我需要获取此文件夹的路径。
在您的下载文件功能中,我没有在任何地方看到这个。 ".AudioKitFilesFolder"
【参考方案1】:
如果你改变了会发生什么
do
let fileManager = FileManager.default
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let fileURL = documentsURL.appendingPathComponent(fileName)
try fileManager.copyItem(at: location, to: fileURL)
try self.router.configureParameters(bodyParameters: ["uuid": UserDefaultsHelper.uuid], urlParameters: nil, request: &request)
catch
到
do
let fileManager = FileManager.default
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let audioKitFilesFolder = documentsURL.appendingPathComponent(".AudioKitFilesFolder")
let fileURL = audioKitFilesFolder.appendingPathComponent(fileName)
try fileManager.copyItem(at: location, to: fileURL)
try self.router.configureParameters(bodyParameters: ["uuid": UserDefaultsHelper.uuid], urlParameters: nil, request: &request)
catch
也许删除 .从 。 AudioKitFilesFolder 在所有地方
【讨论】:
以上是关于将文件保存到自定义文件夹的主要内容,如果未能解决你的问题,请参考以下文章
将点击的图像保存到自定义文件夹(最好是应用程序内部)而不是图库
iOS5将图像保存到自定义文件夹,ALAssetsLibrary 失败
如何使用 react-native-camera 将捕获的图像保存到自定义应用程序特定文件夹