2011-11-03 99 views
1

我想從Android上的原始資源文件(以Java)讀取數據。 出於某種原因,inStream.read(txt)正在引發異常被拋出。 有人可以告訴我我做錯了什麼嗎? 是否有我需要設置的權限?嘗試讀取原始資源文件的異常[Android]

try 
{ 
     resourceId = R.raw.testmodel; 
    if(resourceId==0) 
     return false; // invalid id 

    InputStream inStream = context.getResources().openRawResource(resourceId); 

    if(inStream==null) 
     return false; 

    byte[] txt = new byte[512]; 
    inStream.read(txt); 
    //Toast.makeText(context,new String(txt),Toast.LENGTH_LONG).show(); 
    inStream.close(); 
}catch(Exception e) 
{ 
    Toast.makeText(context,"strange exception",Toast.LENGTH_LONG).show(); 
    return false; 
} 
+0

被拋出什麼異常。 logcat說什麼? –

+0

logcat說我超過了最大數據0_o我並不期待這個。我不知道現在該做什麼。 – user980058

+0

文件大小是多少? –

回答

1

壓縮apk文件中的資產和原始數據有1MB限制。

版本2.3中刪除的限制。

可能的解決方法是 1)將文件拆分爲1MB塊。 2)給文件名「mp3」的擴展名。具有某些特定擴展名的文件默認情況下不進行壓縮,因此不受「壓縮」資源的限制。擴展名「mp3」是例外之一。

欲瞭解更多信息:

https://stackoverflow.com/questions/2860157/load-files-bigger-than-1m-from-assets-folder

https://stackoverflow.com/questions/1273300/ioexception-while-reading-from-inputstream