尝试复制文件时出错

时间:2013-06-07 16:17:47

标签: ios ios6 afnetworking nsfilemanager

我正在尝试使用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];

我在复制操作时遇到错误

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

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

失败的原因可能是什么

感谢。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

如果正如+ Apurv所说,目标目录不存在,那么你应该做两件事:

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

    使用,来自NSFileManager

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

    createIntermediatesYES