• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

L#013 – Panoramica sul “File System Locale” delle nostre applicazioni iPhone (iOS)

By Redazione | on 26 Luglio 2010 | 5 Comments
Guide Teoriche

gestione file applicazioni iphone devapp Qualche giorno fa vi abbiamo proposto un tutorial sulla gestione dei File all’interno delle nostre applicazioni iPhone, vediamo oggi di approfondire l’argomento offrendovi una panoramica del File System Locale. Niente di complicato, vedremo semplicemente come sono organizzate le cartelle all’interno dei nostri programmi e cercheremo di capire come dovremo organizzare i nostri file all’interno delle stesse.

Come ben saprete molti programmi hanno la necessità di salvare file, che siano questi foto, video, piuttosto che documenti di testo o ancora impostazioni varie dell’applicazione. Insomma, l’uso dei file in un programma è praticamente d’obbligo per la quasi totalità delle applicazioni esistenti. Ma dove dobbiamo salvare i nostri file? Come sono organizzate le cartelle all’interno dei nostri programmi iPhone? Di cosa dovremo tenere conto durante la scelta della corretta posizione?

La tabella seguente e le informazioni a seguire, prelevate direttamente dalla documentazione ufficiale Apple, ci chiariranno senz’altro le idee:

Directory Descrizione
Application_Home/AppName.app Questa è la directory contenente l’applicazione stessa (bundle). Dovremo fare attenzione a non effettuare cambiamenti al contenuto di questa directory a runtime. Così facendo farete in modo che l’applicazione possa avviarsi anche altre volte. Da iOS 2.1 in poi, il contenuto di questa directory non viene “backuppato” da iTunes. Tuttavia, iTunes esegue una sincronizzazione iniziale di tutte le applicazioni acquistate da App Store. Quindi alla prima sincronizzazione verrà comunque fatto un backup anche di questa cartella.
Application_Home/Documents/ Questa è cartella che dovremo utilizzare per archiviare i documenti degli utenti e i file di dati (configurazioni varie) dell’applicazione. I contenuti di questa directory potranno inoltre essere resi disponibili agli utenti attraverso la condivisione di file con un computer desktop.
Application_Home/Library/Preferences Questa directory contiene i file delle preferenze della specifica applicazione. Non dovremmo mai creare file di preferenze direttamente, dovremmo invece sfruttare la classe “NSUserDefaults” o le “CFPreferences API” per leggere e settare le preferenze di un’applicazione. Il contenuto di questa directory viene “backuppato” da iTunes.
Application_Home/Library/Caches Usate questa directory per salvare qualsiasi file di supporto per la vostra applicazione che volete ritrovare ai successivi avvii dell’applicazione. Sarà poi l’applicazione stessa responsabile dell’aggiunta e la rimozione di questi file. iTunes rimuove questi file durante un ripristino completo (full restore) del dispositivo, sarà vostra cura essere abili nel ricrearli quando necessario. Da iOS 2.2 in poi, il contenuto di questa directory non viene “backuppato” da iTunes.
Application_Home/tmp/ Usate questa directory per salvare file temporanei di cui non necessitate la presenza durante successivi avvii dell’applicazione. Dovreste far in modo, inoltre, di rimuovere i file quando ritenete che questi non siano più necessari. Da iOS 2.1 in poi, il contenuto di questa directory non viene backuppato da iTunes.

Come vedete ogni cartella è stata creata per uno scopo specifico. Programmare le nostre applicazioni iPhone, tenendo conto di questi fattori, eviterà eventuali imprevisti o problemi legati al programma stesso.

Case Sensitivity

Il file system dei dispositivi basati su iOS è CASE SENSITIVE. Quando lavorerete con i nomi dei file (e tutto il percorso in genere), dovrete essere certi di utilizzare correttamente maiuscole e minuscole, esattamente come li avevate salvati, o non sarete in grado di aprire o accedere ai file.

Condividere File con computer desktop

Se volete offrire agli utenti la possibilità di accerere ai file del vostro programma tramite computer desktop, potrete farlo tramite il file sharing. Tramite il file sharing abiliterete la condivisione dei file esclusivamente dall’applicazione al computer desktop dell’utente. Non permette quindi la condivisione con altre applicazioni sullo stesso device. Per condividere dati e file tra applicazioni diverse dovrete ovviare usando la “pasteboard“, o sfruttare un controller apposito.

Backup e Restore

iTunes si preoccupa automaticamente di effettuare backup e ripristino dei dati degli utenti in particolari condizioni. Dovrete però sapere dove mettere i vile per essere certi che questi vengano correttamente “backuppati” e all’occorrenza ripristinati, in base alle vostre necessità.

Cosa viene backuppato?

Innanzitutto non dovrete preparare le vostre applicazioni in alcun modo per quanto riguarda le operazioni di backup e ripristino. Da iOS 2.2 in poi, infatti, quando un dispositivo viene connesso a un computer e sincronizzato, iTunes avvia un backup incrementale di tutti i file, eccetto quelli presenti nelle seguenti directory:

  • Application_Home/AppName.app
  • Application_Home/Library/Caches
  • Application_Home/tmp

Anche se iTunes fa il backup del bundle dell’applicazione stessa, non lo fa durante ogni operazione di sincronizzazione. Le applicazioni acquistate dall’App Store direttamente dal device, ad esempio, sono backuppate alla successiva sincronizzazione con iTunes. Le applicazioni, però, non verranno backuppate più durante le successive operazioni di sincronizzazione, a meno che l’applicazione stessa sia cambiata (ad esempio a causa di un aggiornamento).

Per far in modo che il processo di sincronizzazione non duri per un periodo troppo lungo, dovrete essere selettivi sulla posizione scelta durante il salvataggio dei file nelle directory della vostra applicazione. La directory Application_Home/Documents dovrebbe essere usata per salvare i documenti degli utenti e i file dati dell’applicazione. I file temporanei delle vostre applicazioni dovrebbero quini essere posti all’interno della cartella Application_Home/tmp ed essere cancellati dall’applicazione stessa quando non servono più. Se la vostra applicazione avesse la necessità di creare file che devono essere presenti durante gli avvii successivi, ma non necessitano di backup, dovrete porli all’interno della cartella Application_Home/Library/Caches.

NOTA:
Se la vostra applicazione crea file di grandi dimensioni, o file che vengono modificati frequentemente, dovreste considerare di inserirli nella cartella Application_Home/Library/Caches (che non viene “backuppata”) e non all’interno di Application_Home/Documents. Il Backup (o il restore) di grandi file possono infatti rallentare l’intero processo in modo sisgnificativo. Stesse regole per quanto riguarda i file che vengono modificati frequentemente (e di conseguenza che devono essere “backuppati” frequentemente). Posizionare questi file nella cartella “Caches” fa si che non vengano “backuppati” (da iOS 2.2 in poi) durante ogni operazione di sincronizzazione.

File salvati durante gli aggiornamenti dell’applicazione

Quando un utente scarica un aggiornamento per un’applicazione, iTunes installa l’aggiornamento in una nuova directory. Successivamente sposta i file utente dalla vecchia installazione alla nuova ed infine cancella la vecchia installazione. I file nelle seguenti directory saranno presenti anche nella nuova versione dopo il processo di aggiornamento:

  • Application_Home/Documents
  • Application_Home/Library/Preferences

Sebbene anche i file di altre directory potrebbero essere spostati, non dovrete fare affidamento su questo per i vostri aggiornamenti.

Share this story:
  • tweet

Tags: CachesCFPreferences APIDocumentsFile sharingNSUserDefaultspasteboardPreferencestmp

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • T#032 – Sfruttiamo NSUserDefaults per salvare dati delle nostre applicazioni iPhone

    13 Aprile 2010 - 16 Comments

Author Description

5 Responses to “L#013 – Panoramica sul “File System Locale” delle nostre applicazioni iPhone (iOS)”

  1. 26 Luglio 2010

    Tweets that mention Unknown Action « Panoramica sul “File System Locale” delle nostre applicazioni iPhone (iOS) | devAPP -- Topsy.com

    […] This post was mentioned on Twitter by Rynox, devAPP. devAPP said: Panoramica sul “File System Locale” delle nostre applicazioni iPhone (iOS) http://bit.ly/cbo7U9 […]

  2. 4 Agosto 2010

    Fabio

    Salve,

    per quanto riguarda la lettura di file al di fuori del File System Locale? Ad esempio, è possibile fare un piccolo applicativo che legge un file audio e fa la trasformata di fourier? Quindi deve leggere lo stream del file e non semplicemente fare play.

    Grazie

  3. 14 Settembre 2010

    devil_phoenix

    Salve esiste un qualche modo per leggere e scrivere un file fuori dal bundle, utilizzando magari mobileSubstrate o un framework di terze parti? mi serve per un app personale.

  4. 13 Novembre 2010

    france


    devil_phoenix:

    Salve esiste un qualche modo per leggere e scrivere un file fuori dal bundle, utilizzando magari mobileSubstrate o un framework di terze parti? mi serve per un app personale.

    ne ho bisogno anche io, avete qualche idea o link?

  5. 5 Maggio 2011

    Emiliano

    Salve
    io dovrei accedere , e con il terminale dell’iphone ci riesco, ad un file nella cartella /tmp … solo che poi dovrei trasferirlo nel pc o mac di casa, quindi devo trovare un modo per prelevare e inviare questo file … mi sapete aiutare?
    pensavo di usare il terminale e fare il trasferimento con la mal, ma non conosco i comandi telnet ( sul web ho trovato qualcosa , ma non il comando per inserire gli allegati, non so neanche se sia possibile)
    sapete darmi un amano per favore??

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO