java.lang.ArrayStoreException问题求助
各位大神,请问出现这种情况是怎么回事呢?java.lang.ArrayIndexOutOfBoundsException: src.length=1668600 srcPos=0 dst.length=417150 dstPos=0 length=1668600
代码部分为:
FileInputStream fin = new FileInputStream("/sdcard/bin.EOL");
int len = fin.available();
byte [] buffer = new byte[len];
int [] buf=new int[len/4];
fin.read(buffer);
System.arraycopy(buffer,0,buf,0, len); java --------------------编程问答-------------------- buf变量换成byte[]类型 --------------------编程问答-------------------- 学习了,谢谢 --------------------编程问答-------------------- 超出索引值了 --------------------编程问答-------------------- arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
--------------------编程问答--------------------
System.arraycopy(buffer,0,buf,0, len-1);
//注意这里不能直接使用原数组的长度,java中数组是从0开始的,最后一个参数是结束的位置
已经按照您的方法改了,可是还出现问题...
--------------------编程问答-------------------- 可以修改两个地方,但不要同时修改
FileInputStream fin = new FileInputStream("/sdcard/bin.EOL");
int len = fin.available();
byte [] buffer = new byte[len];
int [] buf=new int[len/4]; //修改一 这里直接给len 不要除4
fin.read(buffer);
System.arraycopy(buffer,0,buf,0, len); //修改二 len/4-1
//两个修改二选一,不要同时修改
--------------------编程问答--------------------
成啦成啦~就是又出现一个问题了
说是两个数组不匹配,但是我就是想要把它复制为int型的呀~怎么解决~~~ --------------------编程问答-------------------- System.arraycopy 应该不能满足你的需求,我倒是有个建议,写一个四个字节转int的方法,然后把字节数组循环,每四个字节调用方法一次。然后再添加到int数组里。
补充:Java , Eclipse