Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Rar文件的输入流_Java_Android_Rar - Fatal编程技术网

Java Rar文件的输入流

Java Rar文件的输入流,java,android,rar,Java,Android,Rar,我正在为android写一本漫画书。我想让我的读者阅读cbr文件(cbr文件只是rar文件)。于是我看了看,发现了。我喜欢它,因为它有很多与ZipFile和ZipEntry相同的功能。但我的问题是我不能用它从rar文件中获取inputstream。我想知道是否有什么东西我可以使用Raroscope从rar文件中获取输入流 这就是我的代码扫描rar的方式 public class ReadCBR { String mFileName; List<String> mPages; RAR

我正在为android写一本漫画书。我想让我的读者阅读cbr文件(cbr文件只是rar文件)。于是我看了看,发现了。我喜欢它,因为它有很多与ZipFile和ZipEntry相同的功能。但我的问题是我不能用它从rar文件中获取inputstream。我想知道是否有什么东西我可以使用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();
    }
}
您可以在java中使用句柄rar文件。提取后,您可以将输入流获取到文件中。

mCBR=new-RARFile(filename)

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

i、 e

假设您的文件存储在存储的根目录中

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

mCBR=新文件(文件);//文件传递


mCBR=新RARFile(file.getAbsolutePath());//通过绝对路径

我尝试过junrar,但在android上出现依赖错误。我被告知它不能与android日志一起工作。而且我想先扫描文件。在需要位图之前,我不想解压缩。这样我就节省了内存。我不知道你想说什么。我用junrar让它工作,但是它非常慢,对于我正在尝试的应用程序来说太慢了
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))


}