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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑强强 中级黑马   /  2012-4-10 15:18  /  1672 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;

public class tReader
{
public static void main(String args[])
{
int x= 0;
FileReader fr = null;
try
{
fr = new FileReader("E:/Java Demo/testReader.java");
while((x = fr.read()) != -1)
{
System.out.print((char)fr.read());//*+_我的问题在这!!}
fr.close();
}catch(FileNotFoundException ex)
{
System.out.println("文件没有找到。");
System.exit(-1);
}

catch(IOException ioe)
{
System.out.println("文件读写错误");
System.exit(-1);
}
}
}

这样写“System.out.print((char) i );”可以全部打印出来,
System.out.print((char)fr.read());,如果这样写的话,这个文件打印不全
why??





评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

2 个回复

倒序浏览
while((x = fr.read()) != -1)      你这read已经读了一个字符了   而不打印
{
System.out.print((char)fr.read());}  这又读了一个   打印     每次循环都是读两个  打印一个
回复 使用道具 举报
本帖最后由 孙利川 于 2012-4-10 15:55 编辑

import java.io.*;

public class tReader
{
public static void main(String args[])
{
int x= 0;
FileReader fr = null;
try
{
fr = new FileReader("E:/Java Demo/testReader.java");
while((x = fr.read()) != -1)//这是因为文件里有一个指针,每读出一个字符,指针就会往后偏移一个
//字符。这里已经读出一个字符,但这个字符没有被打印,但指针向下偏移一,接着下面的代码又读出一个
//字符,前后读出的这两个字符不是同一个字符,后面的这个字符才被打印出来,因此会打印不全。而改
//成System.out.print((char) x)后,该代码并不读取字符,而只是打印前一个读出的字符,每读出一
//个字符就会打印一次,因此会全部打印。

{
System.out.print((char)fr.read());//*+_我的问题在这!!}
fr.close();
}
catch(FileNotFoundException ex)
{
System.out.println("文件没有找到。");
System.exit(-1);
}

catch(IOException ioe)
{
System.out.println("文件读写错误");
System.exit(-1);
}
}
}

这样写“System.out.print((char) i );”可以全部打印出来,
System.out.print((char)fr.read());,如果这样写的话,这个文件打印不全
why??

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马