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"); } }
public FTPFile(string name, ulong size, DateTime date, FTPDirectory parent) { this.Name = name; this.FileSize = size; this.Date = date; this.URL = parent.URL + "/" + name; }
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; } }