mark(int readlimit)方法表示,标记当前位置,并保证在mark以后最多可以读取readlimit字节数据,mark标记仍有效。如果在mark后读取超过readlimit字节数据,mark标记就会失效,调用reset()方法会有异常。 和缓冲区有关
参看:http://www.cnblogs.com/zhang-qiang/articles/2050885.html
public class BufferedMark {
public static void main(String [] args) throws Exception{
File file = new File("E:"+File.separator+"test.txt");
InputStream in = null;
in = new FileInputStream(file);
resetStream(input(in));
}
private static BufferedInputStream input(InputStream input) throws Exception{
BufferedInputStream in = new BufferedInputStream(input,2) ;
System.out.println("读取..");
in.mark(3);
return in;
}
private static void resetStream(InputStream input){
try {
System.out.println("reset.."+input.markSupported());
int temp =0;
byte b[] = new byte[10];
// while((temp=input.read())!=-1){
// in.read(b);
temp = input.read();
System.out.print((char)temp+".");
System.out.print((char)input.read()+".");
System.out.print((char)input.read()+".");
input.reset();
System.out.print((char)input.read()+".");
System.out.print((char)input.read()+".");
// }
input.close();
input.mark(10);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}