0

大家好,我尝试使用 epublib 显示 epub 的内容。这是我的代码

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

那是什么?以及如何解决这个问题,以便内容将显示在 webview 上?谢谢

4

1 回答 1

2

您没有发布足够的代码来查看所有详细信息,但是您的getData()方法正在返回一个byte[]. 当您调用toString()一个对象时,它会尝试将其转换为String; 但是数组没有 atoString()可以返回任何特别有用的东西。您得到的是一个标头 ( [B),它告诉您它的类型(字节数组),以及一个地址,它说明它在 JVM 内存中的存储位置。

如果你希望能够看到数组的内容,你可以用Arrays.toString()它来把它变成更有用的东西。你将它传递给byte[]你(在这种情况下,是 的输出getData()),它会为你构造String表示。您的代码如下所示:

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

也有可能您根本不打算让它返回 a byte[],在这种情况下,您的问题在您的代码中更进一步。

于 2014-09-27T16:59:20.133 回答