关于输入输出流的问题,是FileInputStream类的read方法的疑问,具体如下

先发一下完整程序:packagebog.ne.n;importjava.io.*;publicclassExample10_6{publicstaticvoidmain(... 先发一下完整程序: package bog.ne.n;
import java.io.*;
public class Example10_6 {
public static void main(String args[]){
char a[]="今晚10点发起总攻".toCharArray();
int n=0,m=0;
try{
File f=new File("secret.txt");
for(int i=0;i<a.length;i++){
a[i]=(char)(a[i]^'R');
}
FileWriter out=new FileWriter(f);
out.write(a,0,a.length);
out.close();
FileReader in=new FileReader(f);
char tom[]=new char[10];
System.out.println("密文");
while((n=in.read(tom,0,10))!=-1){
String s=new String(tom,0,n);
System.out.println(s);
}
}
catch(IOException e){
System.out.println("file read error");

}
}
} 我的疑惑在 while((n=in.read(tom,0,10))!=-1) 循环这一段,首先我想问的是执行一次read方法不一定是完全把文件的内容读取出来的吧,可能要进行几次read才读完文件的内容; 然后呢,就是只有当read方法的返回值不等于-1的时候才执行下面的循环体,可是(比如说这个例子吧,我假如它执行两次read方法才读取完文件的内容,那第二次调用read方法的时候,把8个中文剩下的几个中文读取出来了,可是此时也会返回一个-1给read方法,那么就不满足循环体的条件了 , 也就不会执行循环体的内容,也就不会打印第二次读取出来存放在数组中的字符了。好了我的问题就是大概这样,希望高手可以耐心看完!谢谢!希望有人帮我解决
展开
 我来答
bd9006
2012-03-15 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4.8万
采纳率:63%
帮助的人:1.6亿
展开全部
LZ 你要看一下read(byte[],int,int)的定义才行了。

int read(byte[] b, int off, int len)
Reads up to len bytes of data from this input stream into an array of bytes.

read

public int read(byte[] b,
int off,
int len)
throws IOException

Reads up to len bytes of data from this input stream into an array of bytes. If len is not zero, the method blocks until some input is available; otherwise, no bytes are read and 0 is returned.
追问
你这些英文的句子我大多都看不懂。。
蛋痛也要定
2013-02-23
知道答主
回答量:43
采纳率:0%
帮助的人:19.4万
展开全部
你第二次调用read读的8个剩下的中文读取出来,返回值不会是-1,第三次读取为空时才会是-1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式