2014-05-15 11 views
5

Sto solo guardando attraverso il codice sorgente Cordova per cercare di capire qualcosa, e ci sono attualmente sei metodi alternativi/proprietà per accedere al percorso di un file.Cordova - FileSystem - perché così tante alternative di percorso?

Attualmente (corrente con iOS), si trova:

// Properties 
file.fullPath; // file:///full/path/syntax/file 
file.nativeURL; // file:///full/path/syntax/file 

// Method(s) 
file.toInternalURL(); // formats the file.fullPath into a cdvfile://localhost/persisten/file. 
file.toURL(); // if file.nativeURL is set, uses file.nativeURL, otherwise use file.toInternalURL() or file.fullPath. 

// Deprecated method(s) 
file.toURI(); // deprecated - calls file.toURL(); 
file.toNativeURL() // deprecated - calls file.toURL(); 

Capisco due sono deprecato - che sia punto di file.toURL() - in modo che io posso ignorare e concentrarsi su solo quattro metodi.

Ma qual è la differenza tra file.fullPath e file.nativeURL - sono esattamente uguali? Sono entrambe proprietà sull'oggetto file, entrambi accessibili pubblicamente.

Per quanto posso dire, file.toURL() utilizza entrambi questi - primo file.nativeURL se non che, allora file.toInternalURL() o, in mancanza, quindi file.fullPath.

Infine, file.toNativeURL() restituisce un percorso formattato cdvfile://.

Quindi, la maggior parte dei metodi punta alla proprietà file.nativeURL. file.toURL() è il metodo da utilizzare poiché gestisce tutte le istanze? Se è così, allora cosa diavolo è cdvfile://?

Grazie

risposta

6

file.fullPath è una parte della specifica, e dovrebbe in realtà essere simile: /path/relative/to/my/root. Se stai vedendo che ha file:///, allora questo è un bug.

file.nativeURL è pensato per essere un dettaglio di implementazione. Ma purtroppo, non è ovviamente contrassegnato come tale. Non fa parte delle specifiche e non esiste su altre piattaforme.

file.toURL() è probabilmente quello che vuoi. Fa parte delle specifiche, ti fornisce un URL che può essere passato a resolveLocalFileSystemURL e ha un minor numero di trucchi rispetto agli URL cdvfile:.

file.toInternalURL() non fa parte della specifica, ma è un'estensione specifica Cordova. Non penso che sarebbe mai una cosa utile da usare.

+0

Grazie Andrew - quando ho scritto, stavo usando Cordova 3.3.0; Al momento non ho eseguito l'aggiornamento, ma lo farò e confermerò se è ancora così per iOS. – keldar

Problemi correlati