我制作了一个程序,使用递归扫描手机,找到位于"/storage/emulated/0/"
下的所有epub文件。这有效,我可以加载找到的文件并将其转换为InputStream
,但我无法使用this API从中获取数据。但是,使用相同的代码从assets文件夹加载epub文件。
用于将文件转换为InputStream的代码如下:
//Example location
bookLocation = "/storage/emulated/0/Downloads/book.epub"
AssetManager assetManager = getAssets();
//DOES NOT WORK
InputStream bookStream = new ByteArrayInputStream(bookLocation.getBytes("UTF-8"));
//WORKS
InputStream bookStream = assetManager.open("book.epub");
答案 0 :(得分:0)
您将bookLocation字符串包装在ByteArrayInputStream中,该字符串会在从
读取时为您提供字符串您真正想做的是以下列方式在filePath上打开FileInputStream
new FileInputStream(bookLocation);
将其添加到您的代码中
//Example location
bookLocation = "/storage/emulated/0/Downloads/book.epub"
setManager assetManager = getAssets();
//DOES NOT WORK
InputStream bookStream = new FileInputStream(bookLocation);
//WORKS
InputStream bookStream = assetManager.open("book.epub");