Aqui está o que eu faço em uma atividade de leitura em buffer estender / modificar para atender às suas necessidades
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
}
}
}
Edição: Minha resposta talvez seja inútil se sua pergunta é sobre como fazê-lo fora de uma atividade. Se sua pergunta é simplesmente como ler um arquivo do ativo, a resposta está acima.
ATUALIZAÇÃO :
Para abrir um arquivo especificando o tipo, adicione o tipo na chamada InputStreamReader da seguinte maneira.
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
}
}
}
EDITAR
Como o @Stan diz no comentário, o código que estou dando não está resumindo as linhas. mLineé substituído a cada passe. Por isso escrevi //process line. Presumo que o arquivo contenha algum tipo de dados (ou seja, uma lista de contatos) e cada linha deve ser processada separadamente.
Caso você queira simplesmente carregar o arquivo sem nenhum tipo de processamento, será necessário resumir mLinea cada passagem usando StringBuilder()e anexando cada passagem.
OUTRA EDIÇÃO
De acordo com o comentário do @Vincent, adicionei o finallybloco.
Observe também que no Java 7 e superior você pode usar try-with-resourcespara usar os recursos AutoCloseablee Closeabledo Java recente.
CONTEXTO
Em um comentário, @LunarWatcher aponta que getAssets()é um classin context. Portanto, se você chamá-lo fora de um, activityprecisará se referir a ele e passar a instância de contexto para a atividade.
ContextInstance.getAssets();
Isso é explicado na resposta de @Maneesh. Portanto, se isso é útil para você, responda a resposta dele porque foi ele quem apontou isso.