我在WebService中封装好读文件的函数如下:
int readByte = 0;
int bytesToRead = 1024;
FileStream fs = new FileStream(filePath,FileMode.Open);
BinaryReader br=new BinaryReader(fs);
byte[] base64buffer = new byte[bytesToRead];
do
{
  readByte=fs.Read(base64buffer,0,bytesToRead);//Tag
  br.Read(base64buffer,0,readByte);
}
  while( bytesToRead<= readByte);
  fs.Close();
当在应用程序中调用WebService时,每当执行到Tag这行代码时,也就是读一块大小为1024字节流,将这块字节流返回到应用程序,然后下次读下一块到应用程序,直到读完,如何在Tag位置控制读的位置?(这个函数要修改,请问怎么改?)

解决方案 »

  1.   

    既然每次只能最多读1024个字节,那么你这个方法要提供一个position标识。例如:
    [WebMethod]
    public byte[] ReadFileData( string FileName, int nStartPosition )
    {
    const int bytesToRead = 1024;
    FileStream fs = new FileStream(filePath,FileMode.Open);
    if( fs.Length < nStartPostion ) return null;
    else
    {
    byte[] base64buffer = null;
    if( nStartPosition + bytesToRead <= fs.Length )
    base64buffer = new byte[bytesToRead];
    else
    base64buffer = new byte[ fs.Length - nStartPosition ]; fs.Seek( nStartPosition );
    fs.Read(base64buffer,0, base64buffer.Length );
    fs.Close();
    return base64buffer ;
    }}