2013-06-19 2 views
0

J'ai écrit un gros morceau de code en lisant les fichiers texte situés sur la carte SD.
Je viens de me rendre compte que je vais avoir besoin de lire les fichiers texte situés dans le dossier Assets.
Vérifiez le code que j'ai posté ci-dessous.
Si c'était possible, mon problème serait résolu.
Malheureusement, l'utilisation d'une instruction IF d'une telle manière n'est apparemment pas autorisée. Pour l'instant, ma seule option est de faire une copie de tout le code de lecture de fichier et de le placer dans un thread AsyncTask séparé (mon code de lecture de fichier est actuellement dans un thread d'arrière-plan AsyncTask), mais environ 250 lignes de code donc ce serait mieux si je n'avais pas à le dupliquer.
Toutes les suggestions seraient appréciées.Un moyen facile de basculer entre InputStream et FileInputStream?

if (switchToAsset == 1); 
{ 
InputStream myStream = getAssets().open(currentFilePath); 
} 
else 
{ 
FileInputStream myStream = new FileInputStream(currentFilePath); 
} 
DataInputStream in = new DataInputStream(myStream); 
BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
+0

Vous n'avez pas besoin d'ajouter les balises dans le titre ;-) – Burkhard

+0

Peut-être que cette http: // stackoverflow. com/questions/5772233/android-converting-inputstream-to-fileinputstream? rq = 1 vous aidera? – Burkhard

Répondre

1
InputStream myStream; 
if (switchToAsset == 1) { // having a semicolon here is BAD BAD BAD 
    myStream = getAssets().open(currentFilePath); 
} else { 
    myStream = new FileInputStream(currentFilePath); 
} 

... ou encore de façon plus concise ...

+0

Oups, n'a pas vu ce point-virgule :) ... il n'était pas là quand je testais. Merci beaucoup pour la réponse géniale! Fonctionne parfaitement! Grand soulagement que je n'ai pas à faire une copie de tout ce code. :) –

Questions connexes