黑马程序员技术交流社区
标题:
io流读取问题
[打印本页]
作者:
\(^o^)/
时间:
2014-5-4 17:01
标题:
io流读取问题
本帖最后由 \(^o^)/ 于 2014-5-7 08:18 编辑
import java.io.*;
class FileReaderDemo
{
public static void main(String[] args) throws IOException
{
//创建一个文件读取流对象,和指定名称的文件相关联
//要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
FileReader fr=new FileReader("demo.txt");
//调用读取流对象的read方法
//read();一次读取一个字符而且会自动往下读取。
while(true)
{
int ch=fr.read();
if(ch==-1)
break;
System.out.println("ch="+(char)ch);
}
fr.close();
}
}
复制代码
为什么把if(ch==-1)
break;
System.out.println("ch="+(char)ch);
改成if(ch!=-1)
System.out.println("ch="+(char)ch);
后面的额fr.close();却读不到?
作者:
skill20
时间:
2014-5-4 17:11
死循环了。
作者:
NewDemo
时间:
2014-5-4 18:12
while循环结束不了
要改的话下面肯定要加上等于-1的情况
if(ch!=-1)
System.out.println("ch=" + (char) ch)
break;//这句话不加,死循环了,就卡这里。
复制代码
就像楼主上面的写法,分支语句
if (ch == -1)
break;//这句话可以把while循环结束掉
System.out.println("ch=" + (char) ch)
复制代码
作者:
爱翚
时间:
2014-5-4 18:59
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("D:\\1.txt");
while (true) {
int ch = fr.read();
/*
* 1、此处把ch == -1改成ch != -1需要按照下面的方法进行修改,否则break;语句写在哪里都是不对的。
* 2、如果不写break;语句结果将会更糟,因为程序直接变成死循环了fr.close();这个语句永远也执行不到
* 在程序编译时就会报错了。
*/
if (ch != -1){
System.out.println("ch=" + (char) ch);
}else{
break;
}
/*if (ch == -1){
break;
System.out.println("ch=" + (char) ch);*/
}
fr.close();
}
}
作者:
邵景伦
时间:
2014-5-5 15:31
if(ch==-1)//这个条件就是判断是否读完。
break;跳出循环
System.out.println("ch="+(char)ch);
改成if(ch!=-1)
System.out.println("ch="+(char)ch);//修改后while循环条件永远是true,为无限循环,所以执行不到
后面的fr.close();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2