当前位置:编程学习 > JAVA >>

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开始的,最后一个参数是结束的位置
--------------------编程问答--------------------
引用 4 楼 yousteely 的回复:
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
//两个修改二选一,不要同时修改

--------------------编程问答--------------------
引用 6 楼 yousteely 的回复:
可以修改两个地方,但不要同时修改


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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,