Вот что я делаю в упражнении для буферизованного чтения: расширение / изменение в соответствии с вашими потребностями
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
}
}
}
РЕДАКТИРОВАТЬ: Мой ответ, возможно, бесполезен, если ваш вопрос о том, как сделать это вне деятельности. Если ваш вопрос заключается в том, как просто прочитать файл из ресурса, то ответ выше.
ОБНОВЛЕНИЕ :
Чтобы открыть файл с указанием типа, просто добавьте тип в вызов 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
}
}
}
РЕДАКТИРОВАТЬ
Как говорит @Stan в комментарии, код, который я даю, не суммирует строки. mLine
заменяется каждый проход. Вот почему я написал //process line
. Я предполагаю, что файл содержит какие-то данные (например, список контактов), и каждая строка должна обрабатываться отдельно.
Если вы просто хотите загрузить файл без какой-либо обработки, вам нужно будет подводить итоги mLine
на каждом проходе, используя StringBuilder()
и добавляя каждый проход.
ДРУГОЕ РЕДАКТИРОВАНИЕ
Согласно комментарию @Vincent я добавил finally
блок.
Также обратите внимание, что в Java 7 и выше вы можете использовать try-with-resources
для использования AutoCloseable
иCloseable
более поздних версиях возможности недавней Java.
КОНТЕКСТ
В комментарии @LunarWatcher указывает, что getAssets()
находится class
в context
. Таким образом, если вы вызываете его вне, activity
вам нужно обратиться к нему и передать экземпляр контекста в действие.
ContextInstance.getAssets();
Это объясняется в ответе @Maneesh. Так что, если это полезно для вас, проголосуйте за его ответ, потому что именно он указал на это.