我试图从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;
}
答案 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