/// <summary> /// Whether to download the file or not /// </summary> /// <param name="strLocalFile"></param> /// <param name="strRemoteFile"></param> /// <param name="FileD"></param> /// <param name="Overwrite"></param> /// <returns></returns> public static bool DownloadFile(string strLocalFile, string strRemoteFile,RemoteFile FileD, OverwriteOptions Overwrite) { bool blOverwriteFile = false; bool blFileFound = false; if (File.Exists(strLocalFile) || File.Exists(strLocalFile + ".7z")) { blFileFound = true; FileInfo fileL; if (File.Exists(strLocalFile)) { fileL = new FileInfo(strLocalFile); } else { fileL = new FileInfo(strLocalFile + ".7z"); } if (fileL.Length != FileD.Length) { blOverwriteFile = true; } } return ((blFileFound == false || blOverwriteFile || (Overwrite == OverwriteOptions.ForceOverwrite && blFileFound)) && !(Overwrite == OverwriteOptions.NoOverwrite && blFileFound == true)); }
private static void RemoteDirectories(ref List<RemoteFile> Files, string Path, AlexPilotti.FTPS.Client.FTPSClient ftps, string ParentDirectory = "") { foreach (DirectoryListItem dli in ftps.GetDirectoryList(Path)) { if (dli.Name != "." && dli.Name != "..") { string Path2 = (Path + "/" + dli.Name).Replace("//","/"); RemoteFile Rfile; try { if (!dli.IsDirectory) { Rfile = new RemoteFile(dli.Name, Path2, Common.FixNulllong(ftps.GetFileTransferSize(Path2)), ParentDirectory, dli.IsDirectory, (DateTime)ftps.GetFileModificationTime(Path2), (DateTime)ftps.GetFileModificationTime(Path2)); } else { Rfile = new RemoteFile(dli.Name, Path2, 0, ParentDirectory, dli.IsDirectory, dli.CreationTime, dli.CreationTime); } } catch (Exception) { Rfile = new RemoteFile(dli.Name, Path2, 0, ParentDirectory, dli.IsDirectory, dli.CreationTime, dli.CreationTime); } Files.Add(Rfile); if (dli.IsDirectory) { RemoteDirectories(ref Files, Path2, ftps, ParentDirectory + "/" + dli.Name); } } } }
/// <summary> /// Walks the path and add each directory and sub directory to the referenced list /// </summary> /// <param name="dir"></param> /// <param name="folders"></param> /// <param name="strParentPathRemove"></param> private static void DirectoryList(DirectoryInfo dir, ref List<RemoteFile> folders, string strParentPathRemove) { try { foreach (DirectoryInfo d in dir.GetDirectories()) { RemoteFile RD1 = new RemoteFile(d); RD1.ParentDirectory = WindowsPathClean(d.Parent.FullName).Replace(WindowsPathClean(strParentPathRemove), ""); folders.Add(RD1); DirectoryList(d, ref folders,strParentPathRemove); } } catch (Exception) { } }
/// <summary> /// Walks the sftp site and passes by reference all of the directories and sub directories /// </summary> /// <param name="Files"></param> /// <param name="Path"></param> /// <param name="sftp"></param> /// <param name="ParentDirectory"></param> private static void RemoteDirectories(ref List<RemoteFile> Files, string Path, SftpClient sftp, string ParentDirectory = "") { foreach (SftpFile File in sftp.ListDirectory(Path)) { if (File.Name != "." && File.Name != "..") { RemoteFile Rfile = new RemoteFile(File.Name, File.FullName, File.Length, ParentDirectory,File.IsDirectory,File.LastWriteTime,File.LastWriteTimeUtc); Files.Add(Rfile); if (File.IsDirectory) { string Path2 = Path + "/" + File.Name; RemoteDirectories(ref Files, Path2, sftp, ParentDirectory + "/" + File.Name); } } } }