本文已参与「新人创作礼」活动,一起开启掘金创作之路
1.使用BufferedReader和BufferedWriter实现快速输入输出(推荐)
BufferedReader和BufferedWriter都在java.io.*包内。
BufferedReader
如果想要BufferedReader读取直到文件流为空结束,则有
String str = null; while((str = in.readLine().split(" ")) != null);
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
成员方法
方法 描述
int read() 读取单个字符。
int read(char[] cbuf, int off, int len) 将字符读入数组的某一部分。
String readLine() 读取一个文本行。
long skip(long n) 跳过字符。
boolean ready() 判断此流是否已准备好被读取。
void close() 关闭该流并释放与之关联的所有资源。
void mark(int readAheadLimit) 标记流中的当前位置。
boolean markSupported() 判断此流是否支持 mark() 操作(它一定支持)。
void reset() 将流重置到最新的标记。
主要使用read() 和 readLine()
String s = in.read() // 读入一个字符 可读入空格回车 但不抛弃回车
String s1 = in.readLine(); // 读入一行 可读入空格可读入回车 但会将回车抛弃
string s2[] = in.readLine().Split(" "); // 使用Split通过空格分割读入的一行字符串,存在s2中
需要注意的是 在windows中按一下回车键 一共有两个字符 "\n\r" 而read()只能读取一个字符所以如要要用read来达到吸收回车的目的,需要用两个read(); 如果用readLine()的话会将"\n\r"全部吸收 , 所以只需要一个readLine()来吸收回车。
BufferedWriter(这里我仍然使用System.out.print等方法,因为不熟悉BufferedWriter的内部结构)
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.in));
主要使用 BufferedWriter类中的 write() 类进行输出。 当数据量大的时候一定要使用这个类进行输出,谨记!
需要注意的是 write() 不能直接输出int类型, 因为write(int a) 会输出其对应的ASCii码的字符 ,比如输出 65
如果需要输出int类型数据,先转换为字符串形式进行输出。(加+或者使用Integer.toString(a))