Почему epublib для Android веб-просмотра загрузки URL-адрес данных показывают [B@41408d8?

Привет всем, я пытаюсь показать содержание epub, используя epublib. это мой код

File f = new File(Environment.getExternalStorageDirectory() + "/documents/cindersilly.epub");
            String path = f.getPath();

            FileInputStream epubInputStream = new FileInputStream(f);
            Book book = new EpubReader().readEpub(epubInputStream);

            wvTest.loadDataWithBaseURL(f.getAbsolutePath(), book.getContents().get(0).getData().toString(), "text/html", "UTF-8", null);

и я получаю результат:

[B @ 41408d8

что это такое? и как решить эту проблему, так что контент будет отображаться на веб-сайте? Спасибо

1 ответ

Решение

Вы не опубликовали достаточно кода, чтобы увидеть все детали, но ваш getData() метод возвращает byte[], Когда вы вызываете toString() на объекте, он пытается преобразовать его в String; но массивы не имеют toString() это возвращает что-нибудь особенно полезное. То, что вы получаете, это заголовок ([B), который сообщает вам его тип (байтовый массив) и адрес, который указывает, где в памяти JVM он хранится.

Если вы хотите видеть содержимое массива, вы можете использовать Arrays.toString() превратить это во что-то более полезное. Вы передаете это byte[] у вас есть (в этом случае, выход getData()) и это создает String Представление для вас. Ваш код будет выглядеть так:

wvTest.loadDataWithBaseURL(f.getAbsolutePath(), Arrays.toString(book.getContents().get(0).getData()), "text/html", "UTF-8", null);

Также возможно, что вы не намеревались вернуть byte[] вообще, в этом случае ваша проблема еще дальше в вашем коде.

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