Determinazione filetype di file nella cartella di asset
-
26-09-2019 - |
Domanda
Domanda: Come si fa a livello di codice distinguere tra directory e file regolari nella cartella attivi
Quando si utilizza AssetManager per accedere ai file nella cartella attivi, sembra impossibile determinare se un file è in realtà un file o una directory. È possibile ottenere l'elenco dei file dal metodo di list
e quindi aprire il file utilizzando il metodo open
. Ho pensato che forse con il metodo openFd
per ottenere il descrittore di file risorsa (e successivamente richiede il normale descrittore di file) mi avrebbe fornire alcune informazioni. Ma che richiede il descrittore di file di una directory determina un IOException (che ha senso dal momento che cosa significherebbe per una directory per avere un descrittore di file ...?).
Al momento sto contando su quel IOException (risultante da attemptng di aprire una directory nella cartella delle attività) al fine di determinare se un file è in realtà una directory. (Apertura di un file regolare funziona bene). Questo mi sembra una cattiva idea. Eventuali altri suggerimenti per distinguere tra un file e una directory?
Soluzione
Sono d'accordo con i commenti sul tuo post. Ma per rispondere alla tua domanda, fanno un oggetto File indicò la directory degli asset
File root = new File("path/to/directory");
Quindi è possibile estrarre tutti i file e le directory secondarie come questo
File[] files = root.listFiles();
Una volta che avete l'elenco è possibile determinare che cosa è quello che utilizza File.isDirectory ().
Per quanto riguarda la determinazione dei tipi di file, che è semplice come utilizzare String.subString () per afferrare il carattere del successivo all'ultimo periodo.
Spero che questo aiuti