Untitled
Never
using Renci.SshNet; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; using System.IO; /* задачи: коннект к серверу по одной кнопке дисконнект призакрытии обход всех папок */ namespace WindowsFormsApp8 { public partial class Form1 : Form { public Form1() { InitializeComponent(); timer.Interval = 1000; timer.Tick += Timer_Tick; string host = textBox2.Text; int port = Int32.Parse(textBox3.Text); string username = textBox4.Text; string password = textBox5.Text; client = new SftpClient(host, port, username, password); client.Connect(); timer.Start(); } #region Переменные SftpClient client; List<string> folderrs = new List<string>(); List<string> files_uploading = new List<string>(); Timer timer = new Timer(); List<string> upl = new List<string>(); Boolean is_uploading = false; #endregion //получениt списка файлов с датой модификации, с сервера public List<Tuple<string, DateTime>> Getlistdtr_files(string path) { //получить список файлов List<string> Files = client.ListDirectory(path).Where(f => !f.IsDirectory).Select(f => f.Name).ToList(); //создать список файлов с датой их последней модификации List<Tuple<string, DateTime>> Filesdata = new List<Tuple<string, DateTime>>(); foreach (string file in Files) { Renci.SshNet.Sftp.SftpFileAttributes fileAttrs = client.GetAttributes(path + "/" + file); DateTime LastWriteTime = fileAttrs.LastWriteTime; Filesdata.Add(new Tuple<string, DateTime>(file, LastWriteTime)); } return Filesdata; } //получениt списка папок, с сервера public List<string> Getlistdtr_folders(string path) { //получить список папок List<string> Directories = client.ListDirectory(path).Where(f => f.IsDirectory).Select(f => f.Name).ToList(); return Directories; } public void OnStatusUpdate(ulong bytesWritten) { Console.WriteLine(bytesWritten); } //загрузка файла на сервер public void Uploader(List<string> FilesToUpload, string remote_path) { foreach (var fileName in FilesToUpload) { if (!IsUp(fileName)) { upl.Add(DateTimeFile(fileName)); Console.WriteLine("upload" + fileName); using (var file = File.OpenRead(fileName)) { client.ChangeDirectory(remote_path); string filename = Path.GetFileName(fileName); client.UploadFile(file, filename, OnStatusUpdate); } } } } //вывод файлов и папок с сервера void show_remote_files() { string path = textBox1.Text; //запрос списка файлов с датами List<Tuple<string, DateTime>> files = Getlistdtr_files(path); string feed = ""; foreach (var file in files) { feed += file.Item1 + file.Item2.ToString("dd:MM:yy - HH:mm:ss") + "\n"; } richTextBox2.Text = feed; //запрос списка папок List<string> folders = Getlistdtr_folders(path); richTextBox1.Text = String.Join("\n", folders.ToArray()); } //вывод файлов и папок с компьютера void show_local_files() { string path = textBox6.Text; //формирование списка файлов с датами string[] fileEntries = Directory.GetFiles(path); List<Tuple<string, DateTime>> Filesdata = new List<Tuple<string, DateTime>>(); foreach (string file in fileEntries) { DateTime lastWriteTime = File.GetLastWriteTime(file).ToLocalTime(); Filesdata.Add(new Tuple<string, DateTime>(file, lastWriteTime)); } string feed = ""; foreach (var file in Filesdata) { feed += file.Item1 + file.Item2.ToString("dd:MM:yy - HH:mm:ss") + "\n"; } richTextBox3.Text = feed; //формирование списка папок string[] subdirectoryEntries = Directory.GetDirectories(path); richTextBox4.Text = String.Join("\n", subdirectoryEntries.ToArray()); } string DateTimeFile(string path) { DateTime lastWriteTime = File.GetLastWriteTime(path).ToLocalTime(); return path + lastWriteTime.ToString("dd.MM.yyyy-HH:mm:ss"); } bool IsUp(string path) { string c = DateTimeFile(path); foreach (var item in upl) { if (c == item) return true; } return false; } #region Кнопочки //коннект private void button1_Click(object sender, EventArgs e) { string host = textBox2.Text; int port = Int32.Parse(textBox3.Text); string username = textBox4.Text; string password = textBox5.Text; client = new SftpClient(host, port, username, password); client.Connect(); } //запуск таймера private void start_timer_Click(object sender, EventArgs e) { timer.Start(); } //обновление информации о файлах private void button2_Click(object sender, EventArgs e) { show_remote_files(); show_local_files(); } private void Timer_Tick(object sender, EventArgs e) { //получение списка серверных файлов string host = textBox2.Text; int port = Int32.Parse(textBox3.Text); string username = textBox4.Text; string password = textBox5.Text; string remote_folder_path = textBox1.Text; List<Tuple<string, DateTime>> remote_files = Getlistdtr_files(remote_folder_path); //получение списка локальных файлов string local_path = textBox6.Text; string[] fileEntries = Directory.GetFiles(local_path); List<Tuple<string, DateTime>> local_files = new List<Tuple<string, DateTime>>(); foreach (string file in fileEntries) { DateTime lastWriteTime = File.GetLastWriteTime(file).ToLocalTime(); local_files.Add(new Tuple<string, DateTime>(file, lastWriteTime)); } List<string> files_for_upload = new List<string>(); foreach (var local_file in local_files) { bool file_not_exist = true; foreach (var remote_file in remote_files) { //сравнение имен файлов string r_name = remote_file.Item1; string l_name = (local_file.Item1).Split('\\').Last(); if (l_name == r_name) { //если файл сущетвует - меняется флаг file_not_exist = false; //сравнение времени изменения if (local_file.Item2 > remote_file.Item2) { files_for_upload.Add(local_file.Item1); } } } if (file_not_exist) { files_for_upload.Add(local_file.Item1); } } if (files_for_upload.Count > 0) { Uploader(files_for_upload, remote_folder_path); } } #endregion private void timer1_Tick(object sender, EventArgs e) { show_remote_files(); show_local_files(); } } }
Raw Text
-
Untitled
10 min ago
-
Baji Live
11 min ago
-
Teen Dildo Lover Scarlett Takes Off Her Clothes And Masturbates With Dildo!
12 min ago
-
Adult Telegram Channels
13 min ago
-
Untitled
14 min ago
-
Untitled
17 min ago
-
Untitled
21 min ago
-
🌴cr0t di wajah | cum
25 min ago
-
💢Look like now and going
26 min ago
-
🚫JKHSAD6546GHSD
27 min ago