Ios 尝试复制文件时出错

Ios 尝试复制文件时出错,ios,ios6,afnetworking,nsfilemanager,Ios,Ios6,Afnetworking,Nsfilemanager,我正在尝试使用NSFileManager将临时文件复制到另一个位置。但是,它失败了,并抱怨其中一个文件不存在 //Copy temp file NSError *error; BOOL exists = [fileManager fileExistsAtPath:chapterFileTemp]; exists = [fileManager fileExistsAtPath:chapterFile]; [fileManager copyItemAtURL:[N

我正在尝试使用NSFileManager将临时文件复制到另一个位置。但是,它失败了,并抱怨其中一个文件不存在

 //Copy temp file
    NSError *error;
    BOOL exists = [fileManager fileExistsAtPath:chapterFileTemp];
    exists = [fileManager fileExistsAtPath:chapterFile];

    [fileManager copyItemAtURL:[NSURL fileURLWithPath:chapterFileTemp]
                         toURL:[NSURL fileURLWithPath:chapterFile]
                         error:&error];

    //Delete temp path
    [fileManager removeItemAtURL:[NSURL fileURLWithPath:chapterFileTemp] error:&error];
复制操作出错

(Error Domain=NSCOCAERRORDOMAIN Code=260“操作无法完成”(可可错误260),“UserInfo=0x1c5190b0{NSFilePath=/var/mobile/Applications/57727CCD-88AD-4D84-8C78-EA8100645C9B/Documents/119/myFileTemp.temp,NSUnderlyingError=0x1c527960“操作无法完成。没有这样的文件或目录”)

现在第一个BOOL返回YES,第二个BOOL返回NO,这是预期的

失败的原因是什么


谢谢。

当目标路径缺少目录时,这是可能的。
确保要复制源文件的位置包含所有必需的目录。

如果如+Apurv所述,目标目录不存在,则应执行两项操作:

  • 确保在您有权访问的位置创建您的目标位置,
    chapterFile
    。iOS应用程序写入文件的位置受到限制;您需要创建与iOS应用程序限制一致的路径。请参阅
    URLsForDirectory:inDomains
  • 调用
    createDirectoryAtPath:withIntermediateDirectories:attributes:error:
    创建目标目录
  • 在完成这两件事之后,
    copyItem
    方法应该可以工作

    使用,从
    NSFileManager

    - (BOOL)createDirectoryAtPath:(NSString *)path
      withIntermediateDirectories:(BOOL)createIntermediates
                       attributes:(NSDictionary *)attributes
                            error:(NSError **)error
    

    使用
    createIntermediates
    作为
    YES

    注意:为什么要创建NSURL?只需使用copyItemAtPath:toPath:error。是的,最初我是以那种方式编写代码的……但同样的错误。对,目录丢失了。非常感谢。