从ftp临时文件夹下载文件,下载完了把临时文件删除,如果临时文件很大的话下载就需要一点时间,这时又去删除程序就会报错,说有程序正在使用这个文件,无法删除,其实就是没下载完,高手指教,怎么判断下载 完了再去删除?

解决方案 »

  1.   

    请问你的下载是异步的吗?你可以选择使用文件长度进行判断。预先获取ftp上的文件长度。
      

  2.   

    单线程操作ftp,先下,下完了删
      

  3.   

    请教异步怎么实现?这方面没弄过Thanks
      

  4.   

    outStream 与inStream 长度相等的时候就可以判断下载已完成了 
    C# code
            private static int SaveBinaryFile(WEBResponse response, string FileName)
            {
                int Value = 1;
                byte[] buffer = new byte[1024];            try
                {
                    if (File.Exists(FileName))
                        File.Delete(FileName);
                    Stream outStream = System.IO.File.Create(FileName);
                    Stream inStream = response.GetResponseStream();                int l;
                        do
                        {
                            l = inStream.Read(buffer, 0, buffer.Length);
                            if (l > 0)
                                outStream.WrITe(buffer, 0, l);
                        }
                        while (l > 0);
                    if(outStream.Length == inStream.Length)
                        Value = 0;
                    outStream.Close();
                    inStream.Close();
                }
                catch
                {
                    Value = -1;
                }            return Value;//失败返回-1,成功返回1,下载完成返回0
            }