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();
}
}
}