File f = new File("c:\\aut.txt"); 
FileOutputStream fos = new FileOutputStream(f); 
OutputStreamWriter osw = new OutputStreamWriter(fos); 
FileInputStream fis = new FileInputStream(f); 
InputStreamReader isr = new InputStreamReader(fis); 
BufferedWriter bw = new BufferedWriter(osw); 
bw.write("你好"); 
bw.newLine(); 
bw.write("好高兴!"); 
bw.newLine(); 
bw.close(); 
BufferedReader br = new BufferedReader(isr); 
String s; 
while ((s = br.readLine()) != null) { //当不用变量S时,直接判断br.readline()!=null, 
// 将只输出”好高兴“,为什么? 
System.out.println(s); 

br.close(); 
}即while部分改成  
while(br.readLine() != null){
System.out.println(br.readLine()); } 这样只输出 “好高兴”。。小弟初学java,对这地方不明白,希望各位指教,谢谢。。

解决方案 »

  1.   

    bw.write("好高兴!"); 时,bw的指针已经指到("你好"); 的下一行了,你在取的时候当然就取不到上面的东西了,
    java的io本人也不是学得很好,个人见解..................
      

  2.   


    while(br.readLine() != null){ //这里已经readLine了一次
      System.out.println(br.readLine()); //这里又readLine一次,那么这次readLine的值是多少?
    }readLine()使用后会自动的调用flush()
      

  3.   

    我好像理解一点,在while里判断时,已经就把“你好”读出来做判断了,然后又在循环体里,就只能输出第二行了吧。。
    readLine()每出现一次,它就要读取一次数据的。。
      

  4.   


    while(br.readLine() != null){//第一次readline "你好"()
    System.out.println(br.readLine());//第二次readline "好高兴!"}
    主要是要分清变量和表达式