示例#1
0
 protected virtual void Dispose(bool dispose)
 {
     if (!dispose)
     {
         return;
     }
     if (_disposed)
     {
         _disposed = true;
         _currentDirectory.ClearContent();
         _rawDirectoryContentList = null;
         _currentDirectory        = null;
         if (_currentCulture.Name != _enUS.Name)
         {
             Thread.CurrentThread.CurrentCulture = _currentCulture;
         }
         if (_currentUICulture.Name != _enUS.Name)
         {
             Thread.CurrentThread.CurrentUICulture = _currentUICulture;
         }
     }
     else
     {
         throw new ObjectDisposedException("FTPManager");
     }
 }
示例#2
0
 public FTPFile(string name, ulong size, DateTime date, FTPDirectory parent)
 {
     this.Name     = name;
     this.FileSize = size;
     this.Date     = date;
     this.URL      = parent.URL + "/" + name;
 }
示例#3
0
        private void FillContent(string url)
        {
            try
            {
                _rawDirectoryContentList = null;
                _currentDirectory        = new FTPDirectory(url);

                Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = _enUS;
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
                request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

                if (UsePassiveMode != null)
                {
                    request.UsePassive = this.UsePassiveMode.Value;
                }

                if (!string.IsNullOrEmpty(_user) && !string.IsNullOrEmpty(_pwd))
                {
                    request.Credentials = new NetworkCredential(_user, _pwd);
                }

                string names = "";
                using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
                {
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(responseStream))
                        {
                            names = reader.ReadToEnd();
                            reader.Close();
                        }
                    }
                    response.Close();
                }
                _rawDirectoryContentList = names.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToArray();

                foreach (var data in _rawDirectoryContentList)
                {
                    var match = _rxDate.Match(data);
                    if (!match.Success)
                    {
                        continue;
                    }
                    DateTime date      = DateTime.Parse(match.Value, _enUS);
                    var      dirMatch  = _rxDir.Match(data);
                    var      fileMatch = _rxFile.Match(data);
                    if (!dirMatch.Success && !fileMatch.Success)
                    {
                        continue;
                    }
                    if (dirMatch.Success)
                    {
                        _currentDirectory.AddContent(new FTPDirectory(dirMatch.Groups["dir"].Value, date, _currentDirectory));
                    }
                    else
                    {
                        _currentDirectory.AddContent(new FTPFile(
                                                         fileMatch.Groups["file"].Value,
                                                         ulong.Parse(fileMatch.Groups["size"].Value),
                                                         date, _currentDirectory));
                    }
                }
            }
            catch (Exception ex)
            {
                LastError = ex;
            }
        }