Я хотел бы считать содержание файла, расположенного в Активах как Строка. Например, текстовый документ, расположенный в src/main/assets/
Исходный вопрос
Я нашел, что этот вопрос главным образом используется в качестве 'FAQ' для чтения файла активов, поэтому я суммировал вопрос выше. Ниже мой исходный наивный вопрос
Я пытаюсь считать файл активов как строку, я попробовал как 20 ответов здесь, но они не работают на меня.
У меня есть файл в моей папке активов: data.opml, и я должен поместить содержание в строку. Я отправляю его как:
OPML.importFromFile(string, MainTabActivity.this);
И получите его как:
importFromFile(String filename, Context context);
Что-то, что работало (но это не файл активов):
OPML.importFromFile(new StringBuilder(Environment.getExternalStorageDirectory().toString()).append(File.separator).append(fileNames[which]).toString(),MainTabActivity.this);
Я попробовал:
AssetFileDescriptor descriptor = getAssets().openFd("data.opml");
FileReader reader = new FileReader(descriptor.getFileDescriptor());
And also:
InputStream input = getAssets().open("data.opml");
Reader reader = new InputStreamReader(input, "UTF-8");
Maby я делаю что-то не так, но он просто не будет работать, потому что он проект дает ошибки (соответственно: OPML не способен для средства чтения файлов аргументов и читателя), Если кто-то знает, как сделать это, это очень ценилось бы!
привет это - по-моему, самый чистый подход:
public static String loadTextFromAssets(Context context, String assetsPath, Charset charset) throws IOException {
InputStream is = context.getResources().getAssets().open(assetsPath);
byte[] buffer = new byte[1024];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
for (int length = is.read(buffer); length != -1; length = is.read(buffer)) {
baos.write(buffer, 0, length);
}
is.close();
baos.close();
return charset == null ? new String(baos.toByteArray()) : new String(baos.toByteArray(), charset);
}
, потому что читатели могли получить проблему с разрывами строки.