Voici ce que je fais dans une activité de lecture tamponnée étendre / modifier pour répondre à vos besoins
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt")));
// do reading, usually loop until end of file reading
String mLine;
while ((mLine = reader.readLine()) != null) {
//process line
...
}
} catch (IOException e) {
//log the exception
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
//log the exception
}
}
}
EDIT: Ma réponse est peut-être inutile si votre question est de savoir comment le faire en dehors d'une activité. Si votre question est simplement de savoir comment lire un fichier à partir d'un actif, la réponse est ci-dessus.
MISE À JOUR :
Pour ouvrir un fichier spécifiant le type, ajoutez simplement le type dans l'appel InputStreamReader comme suit.
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt"), "UTF-8"));
// do reading, usually loop until end of file reading
String mLine;
while ((mLine = reader.readLine()) != null) {
//process line
...
}
} catch (IOException e) {
//log the exception
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
//log the exception
}
}
}
ÉDITER
Comme le dit @Stan dans le commentaire, le code que je donne ne résume pas les lignes. mLineest remplacé à chaque passage. C'est pourquoi j'ai écrit //process line. Je suppose que le fichier contient une sorte de données (c'est-à-dire une liste de contacts) et que chaque ligne doit être traitée séparément.
Dans le cas où vous souhaitez simplement charger le fichier sans aucun traitement, vous devrez résumer mLineà chaque passe en utilisant StringBuilder()et en ajoutant chaque passe.
UNE AUTRE MODIFICATION
D'après le commentaire de @Vincent, j'ai ajouté le finallybloc.
Notez également que dans Java 7 et supérieur, vous pouvez utiliser try-with-resourcespour utiliser les fonctionnalités AutoCloseableet Closeablede Java récent.
LE CONTEXTE
Dans un commentaire, @LunarWatcher souligne qu'il getAssets()s'agit d'un classin context. Donc, si vous l'appelez en dehors d'un, activityvous devez y faire référence et transmettre l'instance de contexte à l'activité.
ContextInstance.getAssets();
Ceci est expliqué dans la réponse de @Maneesh. Donc, si cela vous est utile, augmentez sa réponse, car c'est lui qui l'a souligné.