C#通讯编程--FTP下载

+展开
-C#
#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

加支付宝好友偷能量挖...


评论(0)网络
阅读(109)喜欢(0)Asp.Net/C#/WCF