0

In AppDelegate I create hidden folder in .documents if it doesn't exist:

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)")
        }
    }

In my Networking API I have func that save file from web to .documents. But I need save this file to the my hidden Folder. How I can get path for this folder for my copyItem method?

Newtwork API func:

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()
}
kukhtoa
  • 269
  • 4
  • 13
  • Please note https://stackoverflow.com/questions/34135305/nsfilemanager-defaultmanager-fileexistsatpath-returns-false-instead-of-true – vadian Sep 24 '18 at 20:03
  • @vadian Sorry I don't understand. How this can help me? I need path to my custom hidden folder in .documents folder – kukhtoa Sep 24 '18 at 20:11
  • `absoluteString` is the wrong API – vadian Sep 24 '18 at 20:12
  • @vadian But I created folder with my code. Folder exists. Now I need get path for this folder. – kukhtoa Sep 24 '18 at 20:14
  • in your download file function I dont' see this mentioned anywhere. ".AudioKitFilesFolder" – Augie Sep 24 '18 at 20:38
  • @Augie yes, because now file is saving to .documents. in line try fileManager.copyItem(at: location, to: fileURL). I can't get path of folder ".AudioKitFilesFolder" – kukhtoa Sep 24 '18 at 20:39

1 Answers1

0

What happens if you change

 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 {

to

 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 {

and perhaps remove the . from . AudioKitFilesFolder in all places

Augie
  • 1,311
  • 1
  • 11
  • 18