黑马程序员技术交流社区
标题:
关于BufferedReader读取文本文件内容的问题
[打印本页]
作者:
王春蕾
时间:
2014-4-22 10:37
标题:
关于BufferedReader读取文本文件内容的问题
我定义了一个使用BufferedReader读取文本文件的方法,代码如下:
/**
* 使用BufferedReader读取文本文件内容
* @param bufr
* @return
* @throws IOException
*/
public static String ReadFileText(BufferedReader bufr) throws IOException {
String lineContent=null;
StringBuilder sb=new StringBuilder();
while((lineContent=bufr.readLine())!=null)
{
sb.append(lineContent);
sb.append(LINE_SEPARATOR);
}
lineContent=sb.toString();
return lineContent;
}
复制代码
while循环的条件能不能写成:while((lineContent=bufr.readLine())!="")
这两个有什么区别呢?
PS:两种方式运行结果截然不同
作者:
坏米饭
时间:
2014-4-22 11:26
""和null一样吗。。。
作者:
你为谁归来
时间:
2014-4-22 11:28
null代表的是空。“”代表的是空字符串,肯定不一样啦~
作者:
。烊了
时间:
2014-4-22 11:31
哥们,
1,这还是那个亘古不变的== 与 equals()的区别问题呀,你这里!=“”,表示的是读取到的字符串地址是否与“”的地址相等,很显然 这几乎不可能,所以你的程序必然会陷入死循环。
2,null 与 “”是完全两个东西,比如一个框子,null就表示什么都没有,连这个框子本身都没有,而“”表示框子里面没有东西
3,如果你想达到读取到“”就停止的话可以使用: while(!(lineContent=bufr.readLine()).equals(""))
作者:
⒈心只霸占沵
时间:
2014-4-22 11:32
是个死循环吗?
readLine(); 读到末尾就返回null,你要是读到末尾了,你拿null和“”比较,肯定不行啊,你可以查查API
作者:
SyouRai_Tsk
时间:
2014-4-22 12:13
读取一个字符是当一个对象来看,所以不能使用"",""的含义是空串,而非对象为空
作者:
闲人
时间:
2014-4-22 12:51
本帖最后由 闲人 于 2014-4-22 12:53 编辑
null是空
“”是空白字符串
此空非彼空
打个比方:
当你文本中有 “afdasfasd afdasfsad”时
如果是null,他会全部写完“afdasfasd afdasfsad”
如果是”“,它只会写“afdasfasd”
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2