- public static String myReadLine(Reader r) throws IOException{
-
- /*
- * 思路是定义一个数组,固定长度,一个字节一个字节read,
- * 当数组被占满后 添加加到字符串s的后面,
- * 当read到一个10(测试机器是linux系统,'\n'换行)后,返回s给调用处
- */
-
- int index=0; //数组的下标
- StringBuilder s=new StringBuilder(); //String会多次开辟内存,StringBuilder效率较高
- char[] c=new char[3]; //数组长度设置为较小值,用于测试方便
- int car; //装载每次read()进来的字符;
- while((car=r.read())!=10){
- if(car==-1){
- return null;
- }
- c[index]=(char)car;
- index++; //数组下标自增
- if(index==3){
- index=0; //初始化下标
- s.append(c); //数组装满一次,就往字符串里添加一次
- }
- }
- c[index]='\0'; //此处一定注意,给数组加一个结束标志
- s.append(c); //添加上最后一次没装满的数组.
-
- return s.toString();
-
- }
复制代码 |