/// <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);
                    }
                }
            }
        }