【问题标题】:InputStream for Rar FilesRar 文件的输入流
【发布时间】:2016-03-04 01:20:07
【问题描述】:

我正在为安卓写一个漫画书阅读器。我想让我的读者阅读 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))


}

【问题讨论】:

    标签: java android rar


    【解决方案1】:

    您可以使用junrar 处理java 中的rar 文件。解压后,可以得到一个输入流到一个文件中。

    【讨论】:

    • 我试过 junrar 我得到了 android 的依赖错误。我被告知它不适用于 android 日志。
    • 我也想先扫描文件。在需要位图之前,我不想解压缩。这样我可以节省内存。
    【解决方案2】:

    mCBR = new RARFile(文件名);

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

    假设你的文件存放在 storage 的根目录下,

    文件file = new File(Environment.getExternalStorageDirectory(), fileName);

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

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

    【讨论】:

    • 我不确定你想说什么。我已经使用 junrar 让它工作了,但是对于我正在尝试制作的应用程序来说,它的速度太慢了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多