黑马程序员技术交流社区
标题:
fr.read();怎么前后结果不同。。。
[打印本页]
作者:
nerveva2000
时间:
2014-10-20 12:55
标题:
fr.read();怎么前后结果不同。。。
本帖最后由 nerveva2000 于 2014-10-20 16:20 编辑
有点蒙,前后两种写法结果输出不同啊。。。
import java.io.*;
class Test
{
public static void main(String[] args) throws IOException
{
FileWriter fw = new FileWriter("demo.txt");//创建demo.txt
fw.write("abcdefg");//存入abcdefg
fw.flush();//刷新
FileReader fr = new FileReader("demo.txt");//读取demo.txt
while (true)
{
int ch = fr.read();
if (ch==-1)
break;
sop((char)ch); // 输出abcdef?
}
fr.close();
///////////////////////////////////////////////////
FileReader fr2 = new FileReader("demo.txt");//读取demo.txt
while (true)
{
if (fr2.read()==-1)
break;
sop((char)fr2.read()); //输出bdf?
}
fr2.close();
}
public static void sop( Object obj)
{
System.out.println(obj);
}
}
复制代码
作者:
香草芭芙
时间:
2014-10-20 13:33
package com.itheima.test;
import java.io.*;
class Test
{
public static void main(String[] args) throws IOException
{
FileWriter fw = new FileWriter("demo.txt");// 创建demo.txt
fw.write("abcdefg");// 存入abcdefg
fw.flush();// 刷新
FileReader fr = new FileReader("demo.txt");// 读取demo.txt
while (true)
{
int ch = fr.read();
if (ch == -1)
break;
sop((char) ch); // 输出abcdef?
}
fr.close();
// /////////////////////////////////////////////////
FileReader fr2 = new FileReader("demo.txt");// 读取demo.txt
while (true)
{
if (fr2.read() == -1) // 在这里用了一次 read()方法 读到 a c e g
// 指针指向下一个元素,没有输出语句,看不见
break;
sop((char) fr2.read()); // 输出bdf? //这里又一次用read()读到b d f ? 输出b d f ?指针指向下一个
// ? 是因为 if里的read()把元素都读完了, 并且把指针指向下一个, 已经超出集合,
// sop里的read()读到的是超过集合的数据,所以?
//总之 是写2个read()的问题.
}
fr2.close();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
作者:
nerveva2000
时间:
2014-10-20 16:20
香草芭芙 发表于 2014-10-20 13:33
嗯,多谢,原来是这个原因,嗯,弄明白了fr.read();了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2