Считайте файл Активов как строку

Я хотел бы считать содержание файла, расположенного в Активах как Строка. Например, текстовый документ, расположенный в 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 не способен для средства чтения файлов аргументов и читателя), Если кто-то знает, как сделать это, это очень ценилось бы!

59
задан 14 June 2016 в 21:36

1 ответ

привет это - по-моему, самый чистый подход:

  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);
    }

, потому что читатели могли получить проблему с разрывами строки.

1
ответ дан 1 November 2019 в 11:23

Другие вопросы по тегам:

Похожие вопросы: