O'Reilly logo

Programming iOS 4 by Matt Neuburg

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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]; ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required