java判断文件为空

StringBuffersb=newStringBuffer();br=newBufferedReader(newFileReader(file));while((lin... StringBuffer sb = new StringBuffer();
br = new BufferedReader(new FileReader(file));
while ((lineStr = br.readLine()) != null) {
int i = 0;
while (i <= lineStr.length() - 1) {
ch = lineStr.charAt(i);
if ( ch == dyh.charAt(0)) {
sb.append(ch);
while(ischaracter){
if(i==lineStr.length() - 1)
{
while((lineStr=br.readLine())!=null)//下一行不为空
{
break;
}
if(!br.ready())////////文件为空
{
System.out.print("错误类型:单引号不匹配" + " 第 " + a + " 行 , 第 " + b + " 列1");
i++;
ischaracter=false;
break;
}
}
else {
ch = lineStr.charAt(++i); //继续读取下一个字符
}

}
为什么程序运行进入不了if(!br.ready())语句,判断文件为空时是用这个语句吗?
展开
 我来答
百度网友090def6
推荐于2017-11-26 · TA获得超过2211个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:707万
展开全部

看了下代码,有2个逻辑错误

  1.  判断文件是否为空,使用readLine方法,如果返回null,表示为空

  2. ready()表示文件是否准备完毕


if(!br.ready()) ////////文件为空 

文件读入流后,一直处于准备中,因此程序不会进入if(!br.ready())语句


不清楚你的逻辑,只能部分修改你的代码,希望有帮助,代码和注释如下:

StringBuffer sb = new StringBuffer();
br = new BufferedReader(new FileReader(""));

while ((lineStr = br.readLine()) != null) { // 这里是第一次去,如:第1行
int i = 0;
while (i <= lineStr.length() - 1) {
ch = lineStr.charAt(i);
if (ch == dyh.charAt(0)) {
sb.append(ch);
while (ischaracter) {
if (i == lineStr.length() - 1) {

}
if ((lineStr = br.readLine()) != null) { // 文件不为空:这个时候读取了下一行,针对上去是第2行
if (lineStr.trim().length() == 0) { // 去除空格后,长度等于0,表示这是个一空行
// 这是一个空行,加入你的逻辑
} else {
// 这行有内容,加入你的逻辑
}
} else {
// 这里是文件为空
// 加入你的逻辑
}

}
}
}
}
更多追问追答
追问
当第2行不为空时,我想返回while(ischaracter),即让他从第2行的第一个字符开始读取,到了第三行的最后一个字符,如果第4行不为空,则从第4行的第一个字符开始读取,直到文件结束,这个要怎么实现?
追答
把你对文件的整个操作说1遍,可以吗,这样理解不是很清楚
例如 ischaracter 、dyh 都不清楚代表什么
周尽美
2014-05-01
知道答主
回答量:64
采纳率:0%
帮助的人:23.2万
展开全部
不是 用的是 file.isExits() 应该是这个
更多追问追答
追问
你可能没理解我的意思,我使用br.readline()一行一行读取文本,当读到最后一行时,他的下一行如果为空,则表示已经读取完文本,此时要怎么表示文本为空?
追答
额 这个时候 他返回的是-1  你就发现已经没有了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BUG弄潮儿
2014-05-01 · TA获得超过210个赞
知道小有建树答主
回答量:332
采纳率:0%
帮助的人:202万
展开全部
(lineStr=br.readLine())!=-1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式