fileManager.createFileAtPath always fails

前端 未结 2 641
-上瘾入骨i
-上瘾入骨i 2020-12-19 06:33

I try to call the fileManager.createFileAtPath-method, but it always fails. My variable success is always false. I looked at some simi

相关标签:
2条回答
  • 2020-12-19 07:22

    Make sure that you try to create file in folder that already exists. First create folder, then you can create file at that path.

    private class func assureDirPathExists(path: String)
    {
        if !NSFileManager.defaultManager().fileExistsAtPath(path)
        {
            do {
                try NSFileManager.defaultManager().createDirectoryAtPath(path, withIntermediateDirectories: false, attributes: nil)
            } catch let error as NSError {
                print(error.localizedDescription)
            }
        }
    }
    

    Make sure you are writing file relatively to user domain folder.

     // i.e. Caches, Documents...
     let rootPath = NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true) 
    

    Probably, you are missing the slash character, or you skip some folder creation first.

    If you have ...dir1/dir2/file.ext than you need to create dir1, then dir2 and finally file.ext.

    0 讨论(0)
  • 2020-12-19 07:38

    Here is a problem:

    if fileManager.fileExistsAtPath(String(pListPath), isDirectory: &isDir)
    

    You cannot use String(...) to convert a NSURL to a file path string, you have to use the path method:

    if fileManager.fileExistsAtPath(pListPath.path!, isDirectory: &isDir)
    

    If reportsPath is also an NSURL then the same problem exists at

    pListPath = NSURL(fileURLWithPath: String(reportsPath)).URLByAppendingPathComponent("myReports.plist", isDirectory: false)
    

    which should be

    let pListPath = reportsPath.URLByAppendingPathComponent("myReports.plist", isDirectory: false)
    
    0 讨论(0)
提交回复
热议问题