public static void read1() {
RandomAccessFile r = null;
try {
r = new RandomAccessFile(new File("D:/a.txt"),"r");
byte[] c = new byte[5];
r.read(c, 0, 5);//把这里的0换为其他整数就会出错,为什么,异常如下
System.out.println(new String(c));
} catch (Exception e) {
try {
r.close();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} }r.read(c, 0, 5);//把这里的0换为其他整数就会出错,为什么,异常如下:
java.lang.IndexOutOfBoundsException
at java.io.RandomAccessFile.readBytes(Native Method)
at java.io.RandomAccessFile.read(RandomAccessFile.java:322)
at Test.read1(Test.java:39)
at Test.main(Test.java:12)
解决方案 »
- Reader和InputStream
- 如何使程序顺序执行完
- 新手请教个关于类的方法的问题
- 在jsp页面如何给javascript中的变量付值
- 求大神帮忙写个java程序,定时读取网页的前5条内容存入数据库
- 小弟接触JAVA不深,请教一个问题
- 如何在jtable中隐藏某些行(不是删除行),要多少分给多少分,up有分
- 请问那有下jdk、jswdk for Red Hat Linux7.2的
- 请看我的代码,是一个用tdsDriver连接SQL Server的程序,为何出现:Error reading request connection reset
- 《算法》第四版java 调试归并排序,输入格式的问题?
- main方法中的变量算不算局部变量?
- import语句问题
你的数组长度是5,比如你
r.read(c, 1, 5);就是从数组下标1开始读5个字节,当然会报数组下标越界异常
c是用来保存你读入的数据的数组,偏移是针对这个c来说的。
如果你的偏移=1,那么你读入的数据最大只能是4个byte,要是读5个的话就越界了。
如果你的偏移=2,那么你读入的数据最大只能是3个byte,要是读5个的话就越界了。
……
如果你想跳过几个字符,往下读的话,不应该使用这个方法。
我想读取3456我该怎么做?我用r.read(c,2,4)不行啊.