byte[] b = new byte[32];
int i=0;
int result =0;
do
{
         result=fs.Read(b,i*32,32);
if(i==0)
{
HttpContext.Current.Response.Write(o.UploadFile(b,"Book1.xls","b"));
}
         else
{
HttpContext.Current.Response.Write(o.UploadFile(b,"Book1.xls","c"));
}
i++;
}while(result==32);
fs.Close();
第一次循环的时候没有问题,可是到了第二次循环就好象超过范围了,请问应该怎么改,是怎么回事.

解决方案 »

  1.   

    第二次循环执行到result=fs.Read(b,i*32,32);就已经报错了,i=0时候就新建文件,以后就是追加了.当文件小于32时候就没问题,因为没有执行第二次循环.
      

  2.   

    change
    result=fs.Read(b,i*32,32);with
    result=fs.Read(b,0,32);
      

  3.   

    result=fs.Read(b,0,32);这样写死了,怎么能分段读文件呢,每次不都是从0到32吗?也是只能读前32个.
      

  4.   

    System.IO.Stream fs;
    fs = System.IO.File.OpenRead("d:\\Book1.xls");
    这是fs的定义.
      

  5.   

    Knight94(愚翁) 老大说的没错:
    fs.Read(b,0,32); 0是指数组内部的offset,而不是stream内的offset
      

  6.   

    result=fs.Read(b,0,32);这个的意思也就是说把FS的内容读出32个,放到B中的到32位是吗?
    那他在第二次读的时候就自动知道该从FS的哪里读,而不是从头读吗
      

  7.   

    to result=fs.Read(b,0,32);这个的意思也就是说把FS的内容读出32个,放到B中的到32位是吗?
    那他在第二次读的时候就自动知道该从FS的哪里读,而不是从头读吗ref:
    http://blog.csdn.net/Knight94/archive/2006/08/25/1116346.aspx
      

  8.   

    Stream.Read或者Stream.Write
    中第二个参数是相对第一个参数(即Buffer)而言的,而不是对于Stream的
      

  9.   

    Knight94(愚翁) 老大说的没错:
    fs.Read(b,0,32); 0是指数组内部的offset,而不是stream内的offset虽然不提倡迷信Knight94(愚翁)说的,但是,他说的大部分都是对的^