package com.wxniit.io;import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class ReadAndWrite { /**
 * @param args
 */
public static void main(String[] args) {
// TODO 自动生成方法存根
try {
// 实例化阅读器(节点流、字符流)
FileReader reader = new FileReader("C:/a.txt");


char[] ch = new char[50];
int len = 0; // 读取到的字符数目或者结束标记
while ((len = reader.read(ch)) != -1) {

System.out.print(new String(ch, 0, len));
}
reader.close();


// 实例化缓冲阅读器(流的嵌套, 过滤器流(一个流的参数是其他流))
BufferedReader br = new BufferedReader(reader);

String line = "";

boolean more = true;
while(more){
line = br.readLine();
if(line == null){
more = false;
}
else{
System.out.println(line);
}
}


} catch (FileNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} }}
这个程序为什么只把 C:/a.txt 打印一遍??不是有两个System.out.print 输出么??

解决方案 »

  1.   

    reader.close()以后reader已经是空的了 当然打不出来东西了
      

  2.   

    不过把那 reader.close() 注掉一样只有一个输出。为什么呢??顺便问下,这个论坛怎么玩的,什么给分,不会啊!
      

  3.   

    BufferedReader br = new BufferedReader(reader);
    这个reader在上面已经消耗光了自然不会有输出
      

  4.   

    那么如果加上这一段又会怎么样的,结果还是只输出一遍,怎么解释?? int c = 0;
    while ((c = reader.read()) != -1)
    System.out.print((char) c);
      

  5.   

    BufferedReader br = new BufferedReader(reader);
    这个reader在上面已经消耗光了自然不会有输出
    对头
      

  6.   

    懂了,指针移到头了,要用reset()方法