本帖最后由 JerryJava 于 2014-9-22 12:01 编辑
- package IOEx;
- import java.io.*;
- public class jerryTest01 {
- public static void main(String[] args) throws IOException {
- FileReader fr = new FileReader("c:\\JerryDemo.txt");
-
- int len1 = 0;
-
- while(true)
- {
- if(fr.read()=='4')
- break;
- }
- char next = (char)(fr.read());
- System.out.println("next="+next);
-
-
- }
- }
复制代码
其实需要理解Reader基类中的read() 方法,问题集中在什么情况会使read()停止,API中原文如下- readpublic int read() throws IOExceptionReads a single character. This method will block until a character is available, an I/O error occurs, or the end of the stream is reached. Subclasses that intend to support efficient single-character input should override this method.
Returns: The character read, as an integer in the range 0 to 65535 (0x00-0xffff), or -1 if the end of the stream has been reached Throws: IOException - If an I/O error occurs有3中方式 会被block第一:返回了指定的字符 第二:IO异常第三:整个流的结束!即返回了-1 , 常用来做循环的判断(注意,不是行的结束。 \r\n也是字符,只不过被转义了。)
所以,结论挺明显了,读一下我为你写的实例就知道了,我的JerryDemo中内容如下1234567890第一次循环找到了4,然后break , 下一次fr.read()的值赋给了next并打印,结果是5.也就是说只要读取流没有关闭,它的read()方法会在block处继续读,当然如果有异常或者读到了最后就读不了了~希望对你有帮助。
|