Guest User

Ftp downloader

a guest
Oct 20th, 2016
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.27 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.IO;
  5. using System.IO.Compression;
  6. using System.Linq;
  7. using System.Net;
  8. using System.Text;
  9. using System.Text.RegularExpressions;
  10. using System.Threading.Tasks;
  11.  
  12. namespace FTPDownload
  13. {
  14.     class Program
  15.     {
  16.         private static string username = read_AppConfig("ftpuser");
  17.         private static string passwort = read_AppConfig("ftppass");
  18.         private static string ftpServer = read_AppConfig("ftphost");
  19.         private static string lokalerPfad = read_AppConfig("downloaddir");
  20.  
  21.  
  22.         static void Main(string[] args)
  23.         {
  24.             Program p = new Program();
  25.  
  26.             Console.WriteLine("Current ServerName: " + ftpServer);
  27.             Console.WriteLine("Current Username: " + username);
  28.             Console.WriteLine("Current Password: " + passwort);
  29.             Console.WriteLine("Current LocalPath: " + lokalerPfad);
  30.             Console.WriteLine("Downloading files From server");
  31.             //FTPDownload();
  32.  
  33.             DirectoryInfo directorySelected = new DirectoryInfo(lokalerPfad);
  34.             foreach (FileInfo fileToDecompress in directorySelected.GetFiles("*.zip"))
  35.             {
  36.  
  37.                 Unzipp_Files(fileToDecompress);
  38.                 Console.WriteLine(string.Format("Unzipping file {0}", directorySelected.Name));
  39.             }
  40.             Console.WriteLine("Croping File Names!");
  41.             Crop_FileName(lokalerPfad);
  42.             read_AppConfig(lokalerPfad);
  43.             Console.ReadLine();
  44.  
  45.         }
  46.         #region FTPDownload
  47.         /// <summary>
  48.         /// Downloads all files from given FTPServer
  49.         /// </summary>
  50.         public static void FTPDownload()
  51.         {
  52.             FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpServer);
  53.             ftpRequest.Credentials = new NetworkCredential(username, passwort);
  54.             ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
  55.             FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
  56.             StreamReader streamReader = new StreamReader(response.GetResponseStream());
  57.             List<string> directories = new List<string>();
  58.  
  59.             string line = streamReader.ReadLine();
  60.             while (!string.IsNullOrEmpty(line))
  61.             {
  62.                 directories.Add(line);
  63.                 line = streamReader.ReadLine();
  64.             }
  65.             streamReader.Close();
  66.  
  67.  
  68.             using (WebClient ftpClient = new WebClient())
  69.             {
  70.                 ftpClient.Credentials = new System.Net.NetworkCredential(username, passwort);
  71.  
  72.                 for (int i = 0; i <= directories.Count - 1; i++)
  73.                 {
  74.                     if (directories[i].Contains("."))
  75.                     {
  76.                         Console.WriteLine("Loading file" + i);
  77.                         string path = ftpServer + directories[i].ToString();
  78.                         string trnsfrpth = lokalerPfad + directories[i].ToString();
  79.                         ftpClient.DownloadFile(path, trnsfrpth);
  80.                     }
  81.                 }
  82.             }
  83.  
  84.         }
  85.         #endregion
  86.         #region Unzipp
  87.         /// <summary>
  88.         /// Unzipps files at localPath
  89.         /// </summary>
  90.         /// <param name="files"></param>
  91.         public static void Unzipp_Files(FileInfo files)
  92.         {
  93.             using (FileStream originalFileStream = files.OpenRead())
  94.             {
  95.                 string currentFileName = files.FullName;
  96.                 string newFileName = currentFileName.Remove(currentFileName.Length - files.Extension.Length);
  97.                 if (!File.Exists(newFileName))
  98.                 {
  99.                     try
  100.                     {
  101.                         using (ZipArchive archive = new ZipArchive(originalFileStream))
  102.                         {
  103.                             archive.ExtractToDirectory(lokalerPfad);
  104.                             Console.WriteLine("Decompressed: {0}", files.Name);
  105.                         }
  106.                         Delete_Old_File(currentFileName, files);
  107.                     }
  108.                     catch (Exception ex)
  109.                     {
  110.  
  111.                         Console.WriteLine(ex.ToString());
  112.                     }
  113.                 }
  114.                 else
  115.                 {
  116.                     Console.WriteLine("File already exists!");
  117.                     originalFileStream.Close();
  118.                     Delete_Old_File(newFileName, files);
  119.                     Unzipp_Files(files);
  120.  
  121.                 }
  122.             }
  123.         }
  124.         #endregion
  125.         #region DeleteOldFiles
  126.         /// <summary>
  127.         /// Deletes old Files
  128.         /// </summary>
  129.         /// <param name="currentFile"></param>
  130.         /// <param name="files"></param>
  131.         public static void Delete_Old_File(string currentFile, FileInfo files)
  132.         {
  133.             Console.WriteLine("Deleting file " + currentFile);
  134.             File.Delete(currentFile);
  135.         }
  136.         #endregion
  137.         #region CropFileNames
  138.         /// <summary>
  139.         /// Removes Numbers and underscore
  140.         /// </summary>
  141.         /// <param name="lokalerPfad"></param>
  142.         public static void Crop_FileName(string lokalerPfad)
  143.         {
  144.  
  145.             DirectoryInfo d = new DirectoryInfo(lokalerPfad);
  146.             FileInfo[] infos = d.GetFiles();
  147.             foreach (FileInfo f in infos)
  148.             {
  149.                 var output = "" ;
  150.                 string oldFile = f.FullName;
  151.                 if (Path.GetExtension(oldFile) == "zip")
  152.                 {
  153.                     Console.WriteLine("Is a zip");
  154.                 }
  155.                 else
  156.                 {
  157.                     output = Regex.Replace(oldFile, @"[\d-_]", string.Empty);
  158.                 }
  159.                
  160.  
  161.                 try
  162.                 {
  163.                     File.Move(oldFile, output);
  164.                 }
  165.                 catch (Exception ex)
  166.                 {
  167.  
  168.                     Console.WriteLine(ex.ToString());
  169.  
  170.                 }
  171.                
  172.             }
  173.         }
  174.         #endregion
  175.         #region ReadAppConfig
  176.         public static string read_AppConfig(string key)
  177.         {
  178.             var i = ConfigurationManager.AppSettings[key];
  179.             return i;
  180.         }
  181.         #region SetAppsetings
  182.         /// <summary>
  183.         /// Set Value of a key in the app settings
  184.         /// </summary>
  185.         /// <param name="key"></param>
  186.         /// <param name="value"></param>
  187.         public void setAppSetting(string key, string value)
  188.         {
  189.             //Laden der AppSettings
  190.             Configuration config = ConfigurationManager.OpenExeConfiguration(
  191.                                     System.Reflection.Assembly.GetExecutingAssembly().Location);
  192.             //Überprüfen ob Key existiert
  193.             if (config.AppSettings.Settings[key] != null)
  194.             {
  195.                 //Key existiert. Löschen des Keys zum "überschreiben"
  196.                 config.AppSettings.Settings.Remove(key);
  197.             }
  198.             //Anlegen eines neuen KeyValue-Paars
  199.             config.AppSettings.Settings.Add(key, value);
  200.             //Speichern der aktualisierten AppSettings
  201.             config.Save(ConfigurationSaveMode.Modified);
  202.         }
  203.         #endregion
  204.  
  205.     }
  206.     #endregion
  207. }
  208. w
Add Comment
Please, Sign In to add comment