将文件保存到自定义文件夹

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 将捕获的图像保存到自定义应用程序特定文件夹

Android - 通过 Intent 拍摄照片并使用自定义名称将它们保存到自定义目的地

mui拍照后如何保存到自定义目录中?mui代码如何建文件夹?