A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nerveva2000 中级黑马   /  2014-10-20 12:55  /  1142 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 nerveva2000 于 2014-10-20 16:20 编辑

有点蒙,前后两种写法结果输出不同啊。。。
  1. import java.io.*;
  2. class Test
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 FileWriter fw = new FileWriter("demo.txt");//创建demo.txt
  7.                 fw.write("abcdefg");//存入abcdefg
  8.                 fw.flush();//刷新

  9.                 FileReader fr = new FileReader("demo.txt");//读取demo.txt
  10.                 while (true)
  11.                 {
  12.                         int ch = fr.read();        
  13.                         if (ch==-1)
  14.                                 break;
  15.                         sop((char)ch);        // 输出abcdef?
  16.                 }
  17.                 fr.close();

  18. ///////////////////////////////////////////////////

  19.                 FileReader fr2 = new FileReader("demo.txt");//读取demo.txt
  20.                 while (true)
  21.                 {
  22.                         if (fr2.read()==-1)
  23.                                 break;
  24.                         sop((char)fr2.read()); //输出bdf?
  25.                 }
  26.                 fr2.close();
  27.         }

  28.         public static void sop( Object obj)
  29.         {
  30.                 System.out.println(obj);
  31.         }
  32. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

2 个回复

倒序浏览
  1. package com.itheima.test;

  2. import java.io.*;

  3. class Test
  4. {
  5.         public static void main(String[] args) throws IOException
  6.         {
  7.                 FileWriter fw = new FileWriter("demo.txt");// 创建demo.txt
  8.                 fw.write("abcdefg");// 存入abcdefg
  9.                 fw.flush();// 刷新
  10.                 FileReader fr = new FileReader("demo.txt");// 读取demo.txt
  11.                 while (true)
  12.                 {
  13.                         int ch = fr.read();
  14.                         if (ch == -1)
  15.                                 break;
  16.                         sop((char) ch); // 输出abcdef?
  17.                 }
  18.                 fr.close();
  19.                 // /////////////////////////////////////////////////
  20.                 FileReader fr2 = new FileReader("demo.txt");// 读取demo.txt
  21.                 while (true)
  22.                 {
  23.                         if (fr2.read() == -1) // 在这里用了一次 read()方法 读到 a c e g
  24.                                                     // 指针指向下一个元素,没有输出语句,看不见
  25.                                 break;
  26.                         sop((char) fr2.read()); // 输出bdf? //这里又一次用read()读到b d f ? 输出b d f ?指针指向下一个
  27.                         // ? 是因为 if里的read()把元素都读完了, 并且把指针指向下一个, 已经超出集合,
  28.                         // sop里的read()读到的是超过集合的数据,所以?
  29.                        
  30.                         //总之 是写2个read()的问题.
  31.                 }
  32.                 fr2.close();
  33.         }
  34.         public static void sop(Object obj)
  35.         {
  36.                 System.out.println(obj);
  37.         }
  38. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0

嗯,多谢,原来是这个原因,嗯,弄明白了fr.read();了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马