public IEnumerable<FtpFile> ListFiles(FtpFile parent = null) { var parentPath = parent == null ? "" : parent.Path; var ftp = GetRequest(GetDirectory(parent.Path)); // Set request to do simple list ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails; string str = GetStringResponse(ftp); // replace CRLF to CR, remove last instance str = str.Replace("\r\n", "\r").TrimEnd('\r'); foreach (var line in str.Replace("\n", "").Split(System.Convert.ToChar('\r'))) { //parse if (line != "") { var m = GetMatchingRegex(line); if (m == null) { //failed throw (new ApplicationException("Unable to parse line: " + line)); } else { var filename = m.Groups["name"].Value; var path = parentPath + filename; var dir = m.Groups["dir"].Value; FtpFile file; if (dir != "" && dir != "-") { file = new FtpDir(parentPath, filename); } else { file = new FtpFile(parentPath, filename); } yield return file; } } } }
public FtpDir(FtpFile dir, string name) : base(dir, name) { }
public FtpFile(FtpFile dir, string name) : this(dir == null ? null : dir.Path, name) { }