2016-03-04 109 views
0

我正在爲android編寫一本漫畫書閱讀器。我想讓我的閱讀器讀取cbr文件(cbr文件只是rar文件)。所以我看了看,發現Raroscope。我喜歡它,因爲它具有許多與ZipFile和ZipEntry相同的功能。但我的問題是我無法使用它從rar文件獲取輸入流。我想知道是否有什麼東西可以用於Raroscope從rar文件獲取輸入流。RAR文件的InputStream

這是我的代碼如何掃描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

您可以在Java中使用junrar處理RAR文件。解壓縮後,您可以將輸入流導入文件。

+0

我試過junrar我得到了與android的依賴錯誤。我被告知它不適用於android日誌。 –

+0

另外我想先掃描文件。我不想解壓縮,直到我需要位圖。這樣我就節省了內存。 –

0

mCBR = new RARFile(filename);

我認爲你只通過文件名作爲參數,如果是的話,那麼你應該通過文件對象或文件的絕對路徑不只是文件名。

假設你的文件被存儲在存儲的根,

文件文件=新的文件(Environment.getExternalStorageDirectory(),文件名);

mCBR = new RARFile(file); //由文件傳遞

OR

MCBR =新RARFile(file.getAbsolutePath()); //傳遞絕對路徑

+0

我不確定你想說什麼。 ive得到它使用junrar工作,但它非常緩慢,我試圖做的應用程序太慢了 –