我正在为Android编写漫画阅读器。我希望我的读者阅读cbr文件(cbr文件只是rar文件)。所以我看了,发现Raroscope。我喜欢它,因为它有很多与ZipFile和ZipEntry相同的功能。但我的问题是我不能用它来从rar文件中获取输入流。我想知道是否有一些东西我可以使用Raroscope从rar文件中获取输入流。
这是我的代码扫描rar的方式
public class ReadCBR {
String mFileName;
List<String> mPages;
RARFile mCBR;
public ReadCBR(){
}
public void read(String filename){
mFileName = filename;
try {
mCBR = new RARFile(filename);
mPages = new ArrayList();
Enumeration<? extends RAREntry> entries = mCBR.entries();
while (entries.hasMoreElements()){
RAREntry entry = entries.nextElement();
mPages.add(entry.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
这是我想要做的事情
public Bitmap getPage(int pageNum, int maxLength){
Bitmap bitmap = null;
InputStream in = null;
BitmapFactory.Options opt = new BitmapFactory.Options();
in = mCBR.getInputStream(mPages.get(pageNum))
}
答案 0 :(得分:0)
您可以在java中使用junrar句柄rar文件。解压缩后,您可以将输入流添加到文件中。
答案 1 :(得分:0)
mCBR = new RARFile(filename);
我认为你只是将文件名作为参数传递,如果是这样,那么你应该传递文件对象或文件的绝对路径而不仅仅是文件名。
即。
假设您的文件存储在存储根
中文件文件=新文件(Environment.getExternalStorageDirectory(),fileName);
mCBR = new RARFile(file); //按文件传递
OR
mCBR = new RARFile(file.getAbsolutePath()); //传递绝对路径