Ось, що я роблю в ході роботи з буферного читання, розширюю чи змінюю, щоб відповідати вашим потребам
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: Моя відповідь, можливо, марна, якщо ваше питання стосується того, як це зробити поза діяльністю. Якщо ваше питання полягає лише в тому, як прочитати файл з ресурсу, відповідь вище.
ОНОВЛЕННЯ :
Щоб відкрити файл із зазначенням типу, просто додайте тип у виклику InputStreamReader, як описано нижче.
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
}
}
}
EDIT
Як говорить @Stan у коментарі, код, який я даю, - це не підсумовування рядків. mLineзамінюється кожен пропуск. Ось чому я і писав //process line. Я припускаю, що файл містить якісь дані (тобто список контактів), і кожен рядок повинен оброблятися окремо.
Якщо ви просто хочете завантажити файл без будь-якої обробки, вам доведеться підводити підсумки mLineпри кожному пропуску за допомогою StringBuilder()та додавання кожного проходу.
ІНШЕ РЕДАКТУВАННЯ
Відповідно до коментаря @Vincent я додав finallyблок.
Також зауважте, що в Java 7 і версії ви можете використовувати try-with-resourcesдля використання AutoCloseableіCloseable особливості недавнього Java.
КОНТЕКСТ
У коментарі @LunarWatcher зазначає, що getAssets()це classв context. Отже, якщо ви називаєте його поза межами, activityвам потрібно звернутися до нього та передати контекстний екземпляр діяльності.
ContextInstance.getAssets();
Це пояснено у відповіді @Maneesh. Тож якщо вам це корисно, ви підтримуєте його відповідь, тому що саме він це вказав.