为什么这两个同样的Java程序输出结果不一样

packagecn.mldn.test;importjava.io.File;importjava.io.FileNotFoundException;importjava... package cn.mldn.test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Reader {
public static void main(String[] args) throws Exception {
// TODO 自动生成的方法存根
File file = new File("f:"+File.separator+"demo"+
File.separator+"test.txt");
if(!file.isFile()){
System.out.println("文件不存在");
}
FileReader rea= new FileReader(file);
byte date[] =new byte[1024];
int foot=0;
int temp=0;
while((temp=rea.read())!=-1){
date[foot++]=(byte) temp;
}
System.out.println(new String(date,0,foot));
}
}

package cn.mldn.test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Reader {
public static void main(String[] args) throws Exception {
// TODO 自动生成的方法存根
File file = new File("f:"+File.separator+"demo"+
File.separator+"test.txt");
if(!file.isFile()){
System.out.println("文件不存在");
}
FileReader rea= new FileReader(file);
byte date[] =new byte[1024];
int foot=0;
while((rea.read())!=-1){
date[foot++]=(byte) rea.read();
}
System.out.println(new String(date,0,foot));
}
}
展开
 我来答
百度网友30bb719
2014-05-27 · TA获得超过348个赞
知道小有建树答主
回答量:310
采纳率:75%
帮助的人:207万
展开全部
原因是这里:
while((rea.read())!=-1){
date[foot++]=(byte) rea.read();
}
前面的是单字节读取,存储每一个字节。
后面的这个也是单字节读取,但是每次读取两次,而每次保存的是第二次读取的值。

InputStream你去仔细看看它的三种读取数据流的方法,就明白了。

while循环中每次读取的值没有保存到date中。
pqzhanga
2014-05-27 · TA获得超过636个赞
知道小有建树答主
回答量:488
采纳率:50%
帮助的人:420万
展开全部

比对了你的代码,不同的地方见下面代码

第一个

    int temp=0;
    while((temp=rea.read())!=-1){
        date[foot++]=(byte) temp;
    }

第二个

    while((rea.read())!=-1){
        date[foot++]=(byte) rea.read();
    }

第一个类里只调用了一次rea.read(),用于判断和赋值,而第二个类里调用了两次rea.read(),一个用于判断,一个用于赋值,如果你文件内容小于byte[1024]的长度,那么第二次read将返回空

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9a65c9b
2014-05-27 · TA获得超过551个赞
知道小有建树答主
回答量:519
采纳率:0%
帮助的人:244万
展开全部
原因是这里:
while((rea.read())!=-1){
date[foot++]=(byte) rea.read();
}

楼上说得是没错,但是原因就属于瞎扯淡了,rea.read()这个方法,第一个中,你是每一个都读到了,而第二个中,你是每次取第二次读的值赋值的,相当于100个数每次读偶数;说白了,rea.read()这个方法你每调用一次,他就读取一次
追问
你的意思是在while判断中读了一次,在while语句中又读了一次
追答
就是这个意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuqing0826
2014-05-27 · TA获得超过692个赞
知道小有建树答主
回答量:753
采纳率:0%
帮助的人:725万
展开全部
结果输出的是什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式