Please consider subscribing to Mobile Developer Tips RSS feed or following us on Twitter
|
|
|
In a recent application I needed to create several property list files (plists) to store application information. I opted to store the files in the folder named “Documents” off the home folder.
Here is the code I used to specify the path where I wanted the files written and the code to build an NSString with the full path.
1
2
3
4
5
6
7
8
9
10
11
12
| // Folder and file name
#define USER_PLIST_FULLPATH @"/Documents/User.plist"
// Path to the user property list
NSString *plistPath;
plistPath = [NSHomeDirectory() stringByAppendingString:USER_PLIST_FULLPATH];
// Check for existence of the file
if ([[NSFileManager defaultManager] fileExistsAtPath:plistPath])
...
else
... |
The key to making this work is NSHomeDirectory() a low level C function that returns the path to the current user’s home directory. See the document Low-Level File Management Programming Topics for the specifics on working with the file system.
In the next post I’ll show another means to generate paths to files, arguably a better approach as it uses the provided frameworks for building paths (versus hardcoding as shown here).
Important Note: There is a /Documents directory created in the sandbox for each iPhone application. In other words, the plist file that I created above will not clash with a file of the same name in another iPhone application.
Related posts:
- Filename and Line Number with NSLog: Part I
- Filename and Line Number with NSLog: Part II
- “Default.png” the secret of the load screen …
Comments
One Response to “Get Users Home Directory – Part 1”
Leave Comment
It’s generally better to use stringByAppendingPathComponent instead of stringByAppendingString. It will ensure there’s a single slash (/) between each path component.
You can also use the stringByExpandingTildeInPath method. e.g.:
id plistPath = [@"~/Documents/MyFile.plist" stringByExpandingTildeInPath];
[Reply]