尝试读取原始资源文件的异常[Android]

时间:2011-11-03 14:35:40

标签: android exception resources

我试图从Android上的原始资源文件中读取数据(在Java中)。 由于某种原因,inStream.read(txt)导致抛出异常。 任何人都可以告诉我我做错了什么吗? 我需要设置权限吗?

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;
}

1 个答案:

答案 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