使用BufferReader类的readLine()方法注意问题

来源:互联网 发布:js判断大于等于0 编辑:程序博客网 时间:2024/04/30 16:24

(一)BufferReader类的readLine()方法:

public  String   readLine():直到程序遇到了换行符或者是对应流的结束符,该方法才会认为读到了一行,才会结束其阻塞,让程序继续往下执行。

注意:读取到没有数据时就返回null(因为其它read()方法当读到没有数据时返回-1),而实际上readLine()是一个阻塞函数,当没有数据读取时,就一直会阻塞在那,而不是返回null。

读取一个文本行,通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。

返回:到达流末尾,就返回null。

注意:当循环读取文件内容时,循环条件的结束要注意使用正确。

错误的使用方式:

String valueString = null;
   while (bf.readLine()!=null){        //这样会造成数据丢失,因为在这里已经调用了readLine()方法,已经读取了一行,下次调用时,就会丢失一行。
        System.out.println(valueString);
}

正确的解决方法:用一个变量来接收方法的返回值

String valueString = null;
   while ((valueString=bf.readLine())!=null){     //通过变量来接收数据,避免数据丢失
        System.out.println(valueString);
}


(二)DataInputStream类的readUTF()方法

readUTF读取的必须是writeUTF()写下的字符串。即DataOutputStream的 writeUTF(String str)方法配套使用