Basic File Operations
Let’s say we intend to create folder MyFolder inside the Documents directory. Starting with the path string docs pointing at the Documents directory (as obtained in the previous section), we can generate a reference to MyFolder, using one of the many NSString methods specifically aimed at manipulating path strings. (There is no way to create a folder specified by a URL.) We can then use an NSFileManager instance (fm) to learn whether our target folder exists, and to create it if it doesn’t:
NSString* myfolder = [docs stringByAppendingPathComponent:@"MyFolder"];
BOOL exists = [fm fileExistsAtPath:myfolder];
if (!exists) {
NSError* err = nil;
[fm createDirectoryAtPath:myfolder withIntermediateDirectories:NO
attributes:nil error:&err];
// error-checking omitted
}To learn what files and folders exist within a directory, you can ask for an array of the directory’s contents:
NSError* err = nil; NSArray* arr = [fm contentsOfDirectoryAtPath:docs error:&err]; // error-checking omitted /* MyFolder */
That array is shallow, showing only the directory’s immediate contents. For a deep array, ask for the directory’s subpaths:
NSError* err = nil; NSArray* arr = [fm subpathsOfDirectoryAtPath:docs error:&err]; // error-checking omitted /* MyFolder MyFolder/moi.txt */
A deep array might be very big. If you’re looking for something in particular, you might prefer to enumerate the directory, so that you are handed only one file reference at a time:
NSDirectoryEnumerator* dir = [fm enumeratorAtPath:docs]; ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access