FTP下载

#region "Download: File transfer FROM ftp server"         /// <summary>         /// Copy a file from FTP server to local         /// </summary>         /// <param name="sourceFilename">Target filename, if required </param>         /// <param name="localFilename">Full path of the local file </param>         /// <returns> </returns>         /// <remarks>Target can be blank (use same filename), or just a filename         /// (assumes current directory) or a full path and filename </remarks>         public bool Download(string sourceFilename, string localFilename, bool PermitOverwrite)         {             //2. determine target file             FileInfo fi = new FileInfo(localFilename);             return this.Download(sourceFilename, fi, PermitOverwrite);         }         //Version taking an FtpFileInfo         public bool Download(FtpFileInfo file, string localFilename, bool permitOverwrite)         {             return this.Download(file.FullName, localFilename, permitOverwrite);         }         //Another version taking FtpFileInfo and FileInfo         public bool Download(FtpFileInfo file, FileInfo localFI, bool permitOverwrite)         {             return this.Download(file.FullName, localFI, permitOverwrite);         }         //Version taking string/FileInfo         public bool Download(string sourceFilename, FileInfo targetFI, bool permitOverwrite)         {             //1. check target             if (targetFI.Exists && !(permitOverwrite))             {                 throw (new ApplicationException("Target file already exists"));             }             //2. check source             string target;             if (sourceFilename.Trim() == "")             {                 throw (new ApplicationException("File not specified"));             }             else if (sourceFilename.Contains("/"))             {                 //treat as a full path                 target = AdjustDir(sourceFilename);             }             else             {                 //treat as filename only, use current directory                 target = CurrentDirectory + sourceFilename;             }             string URI = Hostname + target;             //3. perform copy             System.Net.FtpWebRequest ftp = GetRequest(URI);             //Set request to download a file in binary mode             ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile;             ftp.UseBinary = true;             //open request and get response stream             using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())             {                 using (Stream responseStream = response.GetResponseStream())                 {                     //loop to read & write to file                     using (FileStream fs = targetFI.OpenWrite())                     {                         try                         {                             byte[] buffer = new byte[2048];                             int read = 0;                             do                             {                                 read = responseStream.Read(buffer, 0, buffer.Length);                                 fs.Write(buffer, 0, read);                             } while (!(read == 0));                             responseStream.Close();                             fs.Flush();                             fs.Close();                         }                         catch (Exception)                         {                             //catch error and delete file only partially downloaded                             fs.Close();                             //delete target file as it's incomplete                             targetFI.Delete();                             throw;                         }                     }                     responseStream.Close();                 }                 response.Close();             }             return true;         }         #endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值