Rar文件的InputStream

时间:2016-03-04 01:20:08

标签: java android rar

我正在为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))


}

2 个答案:

答案 0 :(得分:0)

您可以在java中使用junrar句柄rar文件。解压缩后,您可以将输入流添加到文件中。

答案 1 :(得分:0)

mCBR = new RARFile(filename);

我认为你只是将文件名作为参数传递,如果是这样,那么你应该传递文件对象或文件的绝对路径而不仅仅是文件名。

即。

假设您的文件存储在存储根

文件文件=新文件(Environment.getExternalStorageDirectory(),fileName);

mCBR = new RARFile(file); //按文件传递

OR

mCBR = new RARFile(file.getAbsolutePath()); //传递绝对路径