public IEnumerable <StreamTransferInfo> GetFileStreams(string folder, string fileMask, bool recursive) { _setStatus(true); // download files foreach (var f in ListFiles(folder, fileMask, recursive)) { StreamTransferInfo file = null; try { file = new StreamTransferInfo { FileName = f.FileName, FileStream = client.ReadFile(f.FileName, false) }; } catch (Exception ex) { LastError = ex.Message; // skip file } if (file != null) { yield return(file); } } }
public IEnumerable <StreamTransferInfo> GetFileStreams(string folder, string fileMask, bool recursive) { var pattern = String.IsNullOrEmpty(fileMask) ? null : new System.Text.RegularExpressions.Regex(FileTransferHelpers.WildcardToRegex(fileMask), System.Text.RegularExpressions.RegexOptions.IgnoreCase | System.Text.RegularExpressions.RegexOptions.Singleline); // get files List <FtpListItem> files = null; for (int i = 0; i < Details.RetryCount; i++) { // try to open if (!Open()) { continue; } try { // get all files to download, but limit to 2MM files = _listFiles(folder, pattern, recursive).Take(2000000).ToList(); _setStatus(true); break; } catch (Exception ex) { _setStatus(ex); // disconnect on error Close(); // delay in case of network error System.Threading.Thread.Sleep(Details.RetryWaitMs); } } // sanity check if (files == null) { yield break; } _setStatus(true); // download files foreach (var f in files) { StreamTransferInfo file = null; try { file = new StreamTransferInfo { FileName = f.FullName, FileStream = client.OpenRead(f.FullName) }; } catch (Exception ex) { LastError = ex.Message; // skip file } if (file != null) { yield return(file); } } }