---
title: "copyPath:toPath:handler:"
framework: foundation
role: symbol
role_heading: Instance Method
path: "foundation/nsfilemanager/copypath:topath:handler:"
---

# copyPath:toPath:handler:

Copies the directory or file specified in a given path to a different location in the file system identified by another path.

## Declaration

```occ
- (BOOL) copyPath:(NSString *) src toPath:(NSString *) dest handler:(id) handler;
```

## Parameters

- `src`: The location of the source file.
- `dest`: The location to which to copy the file specified by source.
- `handler`: An object that responds to the callback messages doc://com.apple.documentation/documentation/ObjectiveC/NSObject-swift.class/fileManager(_:willProcessPath:) and doc://com.apple.documentation/documentation/ObjectiveC/NSObject-swift.class/fileManager(_:shouldProceedAfterError:). You can specify nil for handler; if you do so and an error occurs, the method automatically returns doc://com.apple.documentation/documentation/Swift/false.

## Return Value

Return Value true if the copy operation is successful. If the operation is not successful, but the callback handler of fileManager(_:shouldProceedAfterError:) returns true, copyPath:toPath:handler: also returns true. Otherwise this method returns false. The method also attempts to make the attributes of the directory or file at destination identical to source, but ignores any failure at this attempt.

## Discussion

Discussion If source is a file, the method creates a file at destination that holds the exact contents of the original file (this includes BSD special files). If source is a directory, the method creates a new directory at destination and recursively populates it with duplicates of the files and directories contained in source, preserving all links. The file specified in source must exist, while destination must not exist prior to the operation. When a file is being copied, the destination path must end in a filename—there is no implicit adoption of the source filename. Symbolic links are not traversed but are themselves copied. File or directory attributes—that is, metadata such as owner and group numbers, file permissions, and modification date—are also copied. The handler callback mechanism is similar to delegation. NSFileManager sends fileManager(_:willProcessPath:) when it begins a copy, move, remove, or link operation. It sends fileManager(_:shouldProceedAfterError:) when it encounters any error in processing. Special Considerations Because this method does not return error information, it has been deprecated as of OS X v10.5. Use copyItem(at:to:) instead.

## See Also

### Related Documentation

- [linkItem(at:to:)](foundation/filemanager/linkitem(at:to:).md)
- [copyItem(atPath:toPath:)](foundation/filemanager/copyitem(atpath:topath:).md)
- [removeItem(atPath:)](foundation/filemanager/removeitem(atpath:).md)

### Deprecated Methods

- [movePath:toPath:handler:](foundation/nsfilemanager/movepath:topath:handler:.md)
- [removeFileAtPath:handler:](foundation/nsfilemanager/removefileatpath:handler:.md)
- [changeFileAttributes(_:atPath:)](foundation/filemanager/changefileattributes(_:atpath:).md)
- [fileAttributes(atPath:traverseLink:)](foundation/filemanager/fileattributes(atpath:traverselink:).md)
- [fileSystemAttributes(atPath:)](foundation/filemanager/filesystemattributes(atpath:).md)
- [directoryContents(atPath:)](foundation/filemanager/directorycontents(atpath:).md)
- [createDirectory(atPath:attributes:)](foundation/filemanager/createdirectory(atpath:attributes:).md)
- [createSymbolicLink(atPath:pathContent:)](foundation/filemanager/createsymboliclink(atpath:pathcontent:).md)
- [pathContentOfSymbolicLink(atPath:)](foundation/filemanager/pathcontentofsymboliclink(atpath:).md)
- [linkPath:toPath:handler:](foundation/nsfilemanager/linkpath:topath:handler:.md)
- [fileManager(_:shouldProceedAfterError:)](objectivec/nsobject-swift.class/filemanager(_:shouldproceedaftererror:).md)
- [fileManager(_:willProcessPath:)](objectivec/nsobject-swift.class/filemanager(_:willprocesspath:).md)
