与reset()联用import java.io.*;
public class Test {
public static void main(String[] args) {
//此构造方法将in对象的currentPosition、Position为0
ByteArrayInputStream in = new ByteArrayInputStream("asdfqwer".getBytes());
int i; while(true){
in.(0); //1 Position == 0,1,2...
i = in.read(); //2 currentPosition++
if(i == -1)break;
System.out.print((char)i);
in.reset(); //3 currentPosition = Position
i = in.read(); //4 currentPosition++
if(i == -1)break;
System.out.print((char)i);
}
in.close();
}
}1 Position == 0;
2 currentPosition == 1;
3 currentPosition == 0;
4 currentPosition == 1;1 Position == 1;
2 currentPosition == 2;
3 currentPosition == 1;
4 currentPosition == 2;......
public class Test {
public static void main(String[] args) {
//此构造方法将in对象的currentPosition、Position为0
ByteArrayInputStream in = new ByteArrayInputStream("asdfqwer".getBytes());
int i; while(true){
in.(0); //1 Position == 0,1,2...
i = in.read(); //2 currentPosition++
if(i == -1)break;
System.out.print((char)i);
in.reset(); //3 currentPosition = Position
i = in.read(); //4 currentPosition++
if(i == -1)break;
System.out.print((char)i);
}
in.close();
}
}1 Position == 0;
2 currentPosition == 1;
3 currentPosition == 0;
4 currentPosition == 1;1 Position == 1;
2 currentPosition == 2;
3 currentPosition == 1;
4 currentPosition == 2;......
解决方案 »
- 真心求教,关于Mina建服务器传输乱码的问题
- ArrayList?
- 为什么我的摄像头在我的电脑上有RGB和HSV两种编码方式,在别人的电脑上就只有HSV一种呢?
- 如何用java判断一个字符串符合oracle中的date类型
- jtable能不能在单元格上绑定一个日历控件?
- 请问用Graphic画的图形,应该在什么事件调用重画方法
- 当定义好了Class名后,我要再更改的话,如何去更改??内详。。。
- Applet关闭的小问题!送分!
- java的应用程序中如何定义一个全局变量,在程序的任何地方都可以修改使用?
- 一个关于notify和notifyAll的问题
- 已完成的小程序(<1K),希望达人可以提示更好的算法
- 数据库字段长度问题?请大家帮忙
这个参数代表什么意思,根据你的程序,它好像不代表在readAheadLimit这个位置设置,而是在currentPosition+readAheadLimit这个位置设置,是不是这样呢?请您不吝指教,谢谢!
reset()方法就是将Position赋给currentPosition,read()方法从currentPosition读一字节,
将currentPosition赋给Position,初值均为01 currentPosition == 0,Position == 0;读第currentPosition个字节,后currentPosition加1,Position不变2 currentPosition == 1,Position == 0;reset()后将currentPosition赋值为Position3 currentPosition == 0,Position == 0;读第currentPosition个字节,后currentPosition加1,Position不变4 currentPosition == 1,Position == 0;1 currentPosition == 1,Position == 1;
2 currentPosition == 2,Position == 1;
3 currentPosition == 1,Position == 1;
4 currentPosition == 2,Position == 1;......
readAheadLimit是指在位置前最多可读入的字节数,然而位置无法通过手工设置定位在第n个字节,只能通过()方法将当前current位置设为位置,可见current位置不会小于位置,故而如何在位置前读入字节呢,此参数无效。源代码如下: public void (int readAheadLimit) {
= pos;
}根本就没用到参数readAheadLimit。另外,jdk文档中也提到Note: The readAheadLimit for this class has no meaning.
^^^^^