added Scanner.read_n()