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())语句,判断文件为空时是用这个语句吗? 展开
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())语句,判断文件为空时是用这个语句吗? 展开
3个回答
展开全部
看了下代码,有2个逻辑错误
判断文件是否为空,使用readLine方法,如果返回null,表示为空
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 都不清楚代表什么
展开全部
不是 用的是 file.isExits() 应该是这个
更多追问追答
追问
你可能没理解我的意思,我使用br.readline()一行一行读取文本,当读到最后一行时,他的下一行如果为空,则表示已经读取完文本,此时要怎么表示文本为空?
追答
额 这个时候 他返回的是-1 你就发现已经没有了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(lineStr=br.readLine())!=-1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询