Very short snippet: Apple iPhone file system
sabato 21 novembre, 2009Sia sul Mac OS X che sull'iPhone OS, abbiamo la possibilità di accedere in modo semplice e diretto alle directory - più importanti - di sistema, che sono:
-
NSHomeDirectory Returns the path to the current user’s home directory.
-
NSHomeDirectoryForUser Returns the path to a given user’s home directory.
-
NSTemporaryDirectory Returns the path of the temporary directory for the current user.
Ecco il codice necessario per utilizzarle:
-
// Directory principali
-
NSLog(@"homePath = %@", homePath);
-
NSLog(@"tempPath = %@", tempPath);
-
NSLog(@"userPath = %@", userPath);
-
-
// homePath = /var/mobile/Applications/C7B94C13-DCEC-40CD-942F-93FD302BF905
-
// tempPath = /private/var/mobile/Applications/C7B94C13-DCEC-40CD-942F-93FD302BF905/tmp/
-
// userPath = /var/mobile/Applications/C7B94C13-DCEC-40CD-942F-93FD302BF905
Nota: avete notato, riga 4, la chiamata a
NSUserName()che ritorna il "current user"
Esistono, poi, tutta una serie di altre "cartelle" a cui possiamo accedere. Queste possono essere ottenute attraverso la chiamata alla funzione NSSearchPathForDirectoriesInDomains() passandogli come inputs una serie di costanti. Ad esempio possiamo ottenere la cartella Documents in questo modo:
-
NSLog(@"paths = %@", paths);
-
-
// paths = ( "/var/mobile/Applications/C7B94C13-DCEC-40CD-942F-93FD302BF905/Documents" )
-
-
// Cartella Documents
-
NSLog(@"documentsPath = %@", documentsPath);
-
-
// documentsPath = /var/mobile/Applications/C7B94C13-DCEC-40CD-942F-93FD302BF905/Documents
-
-
// Oppure...
-
NSLog(@"documentsDirectory = %@", documentsDirectory);
-
-
// documentsDirectory = /var/mobile/Applications/C7B94C13-DCEC-40CD-942F-93FD302BF905/Documents
Nota: in questo ultimo caso notate l'uso di
stringByAppendingPathComponentche "concatena" Documents al path, aggiungendo lo slash
NSSearchPathForDirectoriesInDomains() ritorna sempre un array di stringhe, anche se nella maggiornaza dei casi gli elementi sono solo uno. Se guardate bene l'output di paths, infatti, viene indicato tra parentesi, cioè un'array. Nel primo caso viene estratto il primo elemento con [paths objectAtIndex:0].
Risorse
Tramite l'oggetto NSBundle, invece, accediamo alla cartella delle risorse di una applicazione; come già sapete, l'estensione .app delle applicazioni Mac è "virtuale", per non dire fittizia. Essa, infatti, cela una sorta di "cartella" con all'interno tutte le risorse necessarie all'applicazione stessa, tra cui l'eseguibile vero e proprio!
Elencare il contenuto di una cartella (browsing)
Il File Management, gestito dall'oggetto NSFileManager, permette di eseguire moltissime utili operazioni come:
- Creare directory e file
- Copiare, spostare e "linkare" file e directory
- Confrontare file e directory
- Ottenere il contenuto di directory
- e altro ancora...
Ad esempio...
-
// Elenco Directory
-
NSLog(@"La cartella %@ contiene = %@", homePath, [fileManager directoryContentsAtPath: homePath]);
-
-
// La cartella /var/mobile/Applications/C7B94C13-DCEC-40CD-942F-93FD302BF905/ contiene = (
-
// Documents,
-
// Library,
-
// "MyApp.app",
-
// tmp
-
// )
Bonus
Per quanto riguarda le informazioni "utente" abbiammo:
-
// FullUserName
-
NSLog(@"fullUserName = %@", fullUserName);
-
// fullUserName = Mobile User
-
-
// NSUserName
-
NSLog(@"userName = %@", userName);
-
// userName = mobile
-
-
// NSHomeDirectoryForUser
-
NSLog(@"directoryForUser = %@", directoryForUser);
-
// directoryForUser = /var/mobile/Applications/DFD6AED2-6B14-4515-8DCD-2AF6F6C2E00C
Lascio a voi provare le "differenze" tra l'uso del simulatore e il device.










19

Non ci sono commenti per questo Post
Lascia un commento