日期:2014-05-20  浏览次数:20806 次

怎么在这个while执行前算出循环次数
public   static   void   crypt(InputStream   in,   OutputStream   out)throws   Exception
{
byte[]   inBytes   =   new   byte[8];
int   inLength   =   0;
boolean   more   =   true;
while   (more)  
{
inLength   =   in.read(inBytes);
if   (inLength   ==   8)
{
//...
}  
else
more   =   false;
}
}

如题,我要用它来更新一个ProgressBar

------解决方案--------------------
没明白啥意思 我也是菜鸟~
------解决方案--------------------
你是不是要读文件,感觉可以先取文件的大小,然后算读入的byte,通过读入的byte和文件大小的比例来更新ProgressBar

------解决方案--------------------

int i= 0;//循环次数
while (more) {
i++;
System.out.println( "i= " + i);
inLength = in.read(inBytes);
if (inLength == 8)
{
//...
}
else
more = false;
}


}

------解决方案--------------------
//while执行前算出循环次数
int count = is.available()/8+1;

//....

------解决方案--------------------
你的逻辑有问题
------解决方案--------------------
没办法。
!=8的时候才退出
天知道要执行多少次.....
------解决方案--------------------
。。 知道这个有啥用?
------解决方案--------------------
你在干啥那??
读文件不是这样读的....

byte[] buffer = new byte[1024];
int readSize = 0;

while((readSize = is.read(buffer) != -1){
...
}

用Stream读文件的话,read返回当前读取到缓冲区的字符数
如果剩余字符大于缓冲区,返回的是缓冲区大小
如果剩余字符小于缓冲区,返回的是读取到的字符数
如果文件已经读完,返回 -1

直接判断是不是返回 -1 就行了