Приложение, которое подключается к ftp-серверу и скачивает rar-архив - C#
Формулировка задачи:
Необходимо было, создать просто консольное приложение, которое подключается к ftp-серверу и скачивает rar-архив в корневую папку где и сама программа, далее запускается winrar и распаковывает с заменой файлы в нужный каталог. Беда в том ,что после подключения к ftp-серверу ПК начинает постоянно пикать и программа и консоль выдает ерунду и отказывается работать. Подскажите пожалуйста, в чем мои ошибки. С библиотекой winrar не работал. Вот код:
using System; using System.Diagnostics; using System.IO; using System.Net; using System.Threading; namespace UpdateDataBaseFtpServer { class appStart { static void Main(string[] args) { Console.WriteLine("Start download rar-archive. Plase wait..."); try { // Get the object used to communicate with the server. FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://xxx.xxx.xxx.xxx/NA_OSP/sklad.rar"); request.Method = WebRequestMethods.Ftp.DownloadFile; // This example assumes the FTP site uses anonymous logon. request.Credentials = new NetworkCredential("xxxx", "xxxx"); FtpWebResponse response = (FtpWebResponse)request.GetResponse(); Console.WriteLine("Logon OK!"); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); Console.WriteLine(reader.ReadToEnd()); Console.WriteLine("Download Complete, status {0}", response.StatusDescription); reader.Close(); response.Close(); ProcessStartInfo ps = new ProcessStartInfo(); ps.FileName = @"C:\Program Files\WinRAR\RAR.exe"; ps.Arguments = @"e o+ C:\FTP\sklad.rar C:\RAB\SKLAD"; // key e and 0+ for with the replacement Console.WriteLine("Replace old files. Plase wait..."); Process procCommand = Process.Start(ps); Console.WriteLine("It's done!"); Thread.Sleep(5000); procCommand.WaitForExit(); } catch (Exception ex) { Console.WriteLine("Eror: " + ex); Console.ReadLine(); } } } }
Решение задачи: «Приложение, которое подключается к ftp-серверу и скачивает rar-архив»
textual
Листинг программы
using System; using System.Diagnostics; using System.IO; using System.Net; using System.Threading; namespace UpdateDataBaseFtpServer { class appStart { static void Main(string[] args) { int Length = 2048; Byte[] buffer = new Byte[Length]; Console.WriteLine("Start. Plase wait..."); Thread.Sleep(5000); try { string inputfilepath = @"C:\FTP\sklad.rar"; string ftphost = "xxx.xxx.xxx.xxx"; string ftpfilepath = "/NA_OSP/sklad.rar"; string ftpfullpath = "ftp://" + ftphost + ftpfilepath; using (WebClient request = new WebClient()) { request.Credentials = new NetworkCredential("asdsf", "asfsa"); Console.WriteLine("Logon OK!"); byte[] fileData = request.DownloadData(ftpfullpath); Console.WriteLine("Start download!"); using (FileStream file = File.Create(inputfilepath)) { file.Write(fileData, 0, fileData.Length); file.Close(); } Console.WriteLine("Download Complete!"); } ProcessStartInfo ps = new ProcessStartInfo(); ps.FileName = @"C:\Program Files\WinRAR\RAR.exe"; ps.Arguments = @"e o+ C:\FTP\sklad.rar C:\RAB\SKLAD"; // Console.WriteLine("Replace old files. Plase wait..."); Process procCommand = Process.Start(ps); Console.WriteLine("It's done!"); Thread.Sleep(5000); procCommand.WaitForExit(); } catch (Exception ex) { Console.WriteLine("Eror: " + ex); Console.ReadLine(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д