Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/117: Рейтинг темы: голосов - 117, средняя оценка - 4.85
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

Скачивание папки с FTP - сервера по актуальной дате

04.10.2018, 09:39. Показов 31591. Ответов 897
Метки ftp, tls (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возможно ли реализовать скачку с фтп папки в которой находятся файлы, папок много, а скачать файлы нужно из той папки, которая названа сегодняшней датой
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2018, 09:39
Ответы с готовыми решениями:

Скачивание папки с FTP - сервера по актуальной дате (2)
Продолжение темы https://www.cyberforum.ru/csharp-net/thread2329455.html var mStr = "20181206_20-15-30.txt"; var dtAr =...

Скачивание папок с FTP-сервера
всем приветик ! подскажите плиииз ! есть батник он подключается к фтп и копирует оттуда файлы все ! open 89.253.247.10 metko ...

Скачивание файла с FTP-сервера
Здравствуйте. Подскажите как загрузить файл с сервера по ftp?

897
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 12:35
Студворк — интернет-сервис помощи студентам
Damenikx, Молодец! Ну что-же, поздравляю, с первым созданным вами пространством имен и классом, пусть и простейшим.
Теперь нам нужен класс, задача которого будет получать информацию о файлах и папках с нашего с вами фтп. Damenikx, Подумайте, как мы его назовем. Жду ваших вариантов.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 12:41  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
Damenikx, Молодец! Ну что-же, поздравляю, с первым созданным вами пространством имен и классом, пусть и простейшим.
Теперь нам нужен класс, задача которого будет получать информацию о файлах и папках с нашего с вами фтп. Damenikx, Подумайте, как мы его назовем. Жду ваших вариантов.
Может быть:
GetFilesFromFtp

или

GetFtpFiles
TakeFtpDocuments
ILikeFilesFromFtp
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 12:41
для удобства чтения, методы и свойства, лучше разделить дополнительной строкой:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
namespace ConsoleApplication13.WTPWorker
{
    /// <summary>
    /// Класс предназначенный для работы с настройками FTP.
    /// </summary>
    class FTPSettings
    {
        /// <summary>
        /// Адрес фтп-сервера, публичное свойство.
        /// </summary>
        public string FTPAdress 
        {
            get
            {
                return "ftp://1.1.1.1.1"; //прерываем выполнение метода и возвращаем значение адреса фпт-сервера
            }
        }
 
        /// <summary>
        /// ///Адрес папки на сегодня, публично свойство.
        /// </summary>
        public string TodayFoladerAdress
        {
            get
            {
                return DateTime.Now.ToString("yyyyMMdd"); // прерываем выполнение метода и возвращаем сегоднешнею дату
            }
        }
 
        /// <summary>
        /// Адрес папки для произвольной даты, принимающее в конструкторе произвольную дату.
        /// </summary>
        /// <param name="CurrentDate">Адрес папки</param>
        /// <returns>Строку с адресом произвольной даты</returns>
        public string CurrentDateFolderAdress(DateTime CurrentDate)
        {
            return CurrentDate.ToString("yyyyMMdd"); ///переводит значение сегодняшней даты в строку
        }
 
        /// <summary>
        /// Полный адрес запроса папки на сегодня, публичное свойство.
        /// </summary>
        public string FullFTPAdressToDay 
        {
            get 
            {
                return FTPAdress + TodayFoladerAdress;//прерываем выполнение метода и возвращаем значения строки FTPAdress + TodayFoladerAdress
            }
        }
 
        /// <summary>
        /// Полный адрес запроса папки для произвольной даты принмающее к конструкторе произвольную дату, публичная строка с конструктором
        /// </summary>
        /// <param name="CurrentDate">Дата на которую необходимо получть адрес</param>
        /// <returns>Строку с полным адресом запроса папки для произвольной даты</returns>
        public string FullFTPAdressCurrentDate(DateTime CurrentDate)
        {
            return FTPAdress + CurrentDateFolderAdress(CurrentDate);//прерываем выполнение метода и возвращаем значение FTPAdress + CurrentDateFolderAdress(CurrentDate)
        }
 
        /// <summary>
        /// Логин пользователя ФТП - публичное свойство.
        /// </summary>
        public string UserFTP
        {
            get { return "1111"; } //прерываем выполнение метода и возвращаем значение с логином от ФТП
        }
 
        public string PwdFTP
        {
            get { return "1111"; } //прерываем выполнение метода и возвращаем значение c паролем от ФТП
        }
 
        /// <summary>
        /// Формируем запрос к ФТП-Серверу. Тип: детальное описание директории.
        /// </summary>
        /// <param name="FolderAdress">Детальное описание директори</param>
        /// <returns>Запрос к Фтп-серверу с детальным описанием директории</returns>
        public FtpWebRequest RequestToDirrectoryDetails(string FolderAdress)
        {
            var res = (FtpWebRequest)FtpWebRequest.Create(FolderAdress); ///создаём соединение с адресом фтп
            res.Credentials = new NetworkCredential(UserFTP, PwdFTP); ///логин, пароль
            res.KeepAlive = false;///не держим соединение после выполнения запроса
            res.UseBinary = true;///тип данных для передачи
            res.Method = WebRequestMethods.Ftp.ListDirectoryDetails; ///получаем список файлов на, которые находятся на фтп - сервере, в папке с текущей даты
            return res; //возвращаем значение res
        }
    }
}
если не обратили внимания, то сейчас у вас есть возможность сворачивать документирование, ну и конечно свойства и методы. Все документирование, оно так же важно как и комментарии, часто они позволяют очень быстро понять, что требовалось от метода. Однако не следует полностью верить документации и комментариям, так как они могут быть устаревшими.
В дальнейшем, вы увидите, как документация помогает выбрать нужный метод. И не ошибиться с нужным аргументом.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 12:42  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
для удобства чтения, методы и свойства, лучше разделить дополнительной строкой:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
namespace ConsoleApplication13.WTPWorker
{
    /// <summary>
    /// Класс предназначенный для работы с настройками FTP.
    /// </summary>
    class FTPSettings
    {
        /// <summary>
        /// Адрес фтп-сервера, публичное свойство.
        /// </summary>
        public string FTPAdress 
        {
            get
            {
                return "ftp://1.1.1.1.1"; //прерываем выполнение метода и возвращаем значение адреса фпт-сервера
            }
        }
 
        /// <summary>
        /// ///Адрес папки на сегодня, публично свойство.
        /// </summary>
        public string TodayFoladerAdress
        {
            get
            {
                return DateTime.Now.ToString("yyyyMMdd"); // прерываем выполнение метода и возвращаем сегоднешнею дату
            }
        }
 
        /// <summary>
        /// Адрес папки для произвольной даты, принимающее в конструкторе произвольную дату.
        /// </summary>
        /// <param name="CurrentDate">Адрес папки</param>
        /// <returns>Строку с адресом произвольной даты</returns>
        public string CurrentDateFolderAdress(DateTime CurrentDate)
        {
            return CurrentDate.ToString("yyyyMMdd"); ///переводит значение сегодняшней даты в строку
        }
 
        /// <summary>
        /// Полный адрес запроса папки на сегодня, публичное свойство.
        /// </summary>
        public string FullFTPAdressToDay 
        {
            get 
            {
                return FTPAdress + TodayFoladerAdress;//прерываем выполнение метода и возвращаем значения строки FTPAdress + TodayFoladerAdress
            }
        }
 
        /// <summary>
        /// Полный адрес запроса папки для произвольной даты принмающее к конструкторе произвольную дату, публичная строка с конструктором
        /// </summary>
        /// <param name="CurrentDate">Дата на которую необходимо получть адрес</param>
        /// <returns>Строку с полным адресом запроса папки для произвольной даты</returns>
        public string FullFTPAdressCurrentDate(DateTime CurrentDate)
        {
            return FTPAdress + CurrentDateFolderAdress(CurrentDate);//прерываем выполнение метода и возвращаем значение FTPAdress + CurrentDateFolderAdress(CurrentDate)
        }
 
        /// <summary>
        /// Логин пользователя ФТП - публичное свойство.
        /// </summary>
        public string UserFTP
        {
            get { return "1111"; } //прерываем выполнение метода и возвращаем значение с логином от ФТП
        }
 
        public string PwdFTP
        {
            get { return "1111"; } //прерываем выполнение метода и возвращаем значение c паролем от ФТП
        }
 
        /// <summary>
        /// Формируем запрос к ФТП-Серверу. Тип: детальное описание директории.
        /// </summary>
        /// <param name="FolderAdress">Детальное описание директори</param>
        /// <returns>Запрос к Фтп-серверу с детальным описанием директории</returns>
        public FtpWebRequest RequestToDirrectoryDetails(string FolderAdress)
        {
            var res = (FtpWebRequest)FtpWebRequest.Create(FolderAdress); ///создаём соединение с адресом фтп
            res.Credentials = new NetworkCredential(UserFTP, PwdFTP); ///логин, пароль
            res.KeepAlive = false;///не держим соединение после выполнения запроса
            res.UseBinary = true;///тип данных для передачи
            res.Method = WebRequestMethods.Ftp.ListDirectoryDetails; ///получаем список файлов на, которые находятся на фтп - сервере, в папке с текущей даты
            return res; //возвращаем значение res
        }
    }
}
если не обратили внимания, то сейчас у вас есть возможность сворачивать документирование, ну и конечно свойства и методы. Все документирование, оно так же важно как и комментарии, часто они позволяют очень быстро понять, что требовалось от метода. Однако не следует полностью верить документации и комментариям, так как они могут быть устаревшими.
В дальнейшем, вы увидите, как документация помогает выбрать нужный метод. И не ошибиться с нужным аргументом.
Я так и знал, что всё это не просто так! =)
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 12:50
Цитата Сообщение от Damenikx Посмотреть сообщение
GetFilesFromFtp
не совсем хорошее имя, так как содержит в названии действие, для классов лучше использовать что-то более нейтральное, наподобие FilesFromFtp.
Цитата Сообщение от Damenikx Посмотреть сообщение
GetFtpFiles
TakeFtpDocuments
думаю понятно почему не подходят.
Цитата Сообщение от Damenikx Посмотреть сообщение
ILikeFilesFromFtp
Вообще плохое название, так как символ "I" подразумевает интерфейс, вообще лучше остерегаться названий начинающихся на "I", кроме интерфейсов (речь не идет о HMI).
Подсказываю, класс работает с фтп папками, файлами и информацией о них. Ваш вариант?

Добавлено через 2 минуты
Цитата Сообщение от V_Monomax Посмотреть сообщение
Подсказываю, класс работает с фтп папками, файлами и информацией о них. Ваш вариант?
вод подсказчик, плохой, конечно мы будем его использовать только для
фтп файлов и информацией о них.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 12:58  [ТС]
FilesWithFtpInfo
FtpFilesInfo
FilesFtpInfo
FilesWithInfoFromFtp
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 13:43
Цитата Сообщение от Damenikx Посмотреть сообщение
FtpFilesInfo
Мне нравиться этот вариант, а вам?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 13:51  [ТС]
Если Вам нравится то и мне нравится.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 14:19
Цитата Сообщение от Damenikx Посмотреть сообщение
Если Вам нравится то и мне нравится.
ок, тогда в созданной папке WTPWorker создаем класс FtpFilesInfo. В классе пишем следующий код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public List<string> DirectoryDetailsToDay//здесь создается интеграционный тест, который должен проверить что данное свойство выдает нужный набор строк, например по количеству мокят папку с известным количеством строк.
{
get{
            var res =new  List<string>();
            var settings = new FTPSettings();//ради интереса в следующей строчке наберите settings, поставьте сразу точку, и посмотрите, что у вас получиться, почитайте вашу документация, а потом не забудьте удалить созданную строку
            var ftp = settings.RequestToDirrectoryDetails(settings.FullFTPAdressToDay );
            var response = (FtpWebResponse)ftp.GetResponse();
            var responseStream = response.GetResponseStream();
            var reader = new StreamReader(responseStream);
            
            while (!reader.EndOfStream)
            {
                res.Add(reader.ReadLine());
            }
            responseStream.Close();
            response.Close();
            reader.Close();
            return res;
}
}
 
public List<string> TodayFileNames//здесь создается интеграционный тест, который должен проверить что данное свойство выдает нужный набор строк, например по количеству или по названиям мокят TodayFoladerAdress на папку с известным количеством файлов.
{
  get
   {
           var res =new  List<string>();
           foreach(var dt in  DirectoryDetailsToDay)
            {
                var sep = new char[] { char.Parse(" ") };
                var Sarr =dt.Split(sep, StringSplitOptions.RemoveEmptyEntries);
                if(Sarr.Lenght>8&&Sarr[8].Contains("."))
                 {
                     res.Add(Sarr[8]);
                  }
            }
           return res;
    }
 
}
Вам необходимо:
1. создать класс
2. Задокументировать и закомментировать, так как я вам уже показывал
3. выложить весь класс сюда.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 14:47  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
var reader = new StreamReader(responseStream);
Ругается, говорит, что не удаётся найти имя типа или пространства имён "StreamReader"
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 14:58
Цитата Сообщение от Damenikx Посмотреть сообщение
Ругается
что говорит?

Добавлено через 38 секунд
слева загорается значек лампочки?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 15:05  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
что говорит?

Добавлено через 38 секунд
слева загорается значек лампочки?
Лампочки нету, красным подчёркнуто.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 15:15
Цитата Сообщение от Damenikx Посмотреть сообщение
Лампочки нету, красным подчёркнуто.
ищите, лампочка точно есть, и снизу должен быть список ошибок (если нет ищите в меню Вид->список ошибок). Читайте, и переписывайте сюда, что там написано!
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 15:17  [ТС]
Не удалось найти имя типа или пространства имён "StreamReader" (пропущена директива на using или ссылка на сборку?)
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 15:20
для того что бы появилась лампочка, нажмите на строку, где ошибка.
Миниатюры
Скачивание папки с FTP - сервера по актуальной дате  
1
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 15:23
Цитата Сообщение от Damenikx Посмотреть сообщение
Не удалось найти имя типа или пространства имён "StreamReader" (пропущена директива на using или ссылка на сборку?)
отлично, теперь вопрос к вам зачем нужна директива using? См рисунок с лампочкой!

Добавлено через 2 минуты
рекомендую в решении создать проект тестирования (по корню проекта - верхняя строчка справа, правой кнопкой мыши, и добавить проект, тип проекта Тест).
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 15:39  [ТС]
Я идиот, полнейший даун
Перекурил и вспомнил, что не подключил библиотеку System.IO
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
namespace ConsoleApplication13.WTPWorker
{
    class FtpFilesInfo
    {
        /// <summary>
        /// здесь создаётся интеграционный тест, который должен проверить, что данное свойство выдаёт нужное количество строк, по количеству мокят с известным количеством строк.
        /// </summary>
        public List<string> DirectoryDetailsToDay
        {
            get
            {
                var res = new List<string>(); //создаём переменную res в который будем заносить результат теста DirectoryDetailsToDay.
                var settings = new FTPSettings(); //объявляем переменную settings
                var ftp = settings.RequestToDirrectoryDetails(settings.FullFTPAdressToDay); //объявляем переменную ftp. Формируем запрос к фтп-серверу и объявляем адрес папки на произвольную дату.
                var response = (FtpWebResponse)ftp.GetResponse();//объявляем переменную responce, заносим информацию об ответе сервера.
                var responseStream = response.GetResponseStream();//объявляем переменную responseStream заносим информацию об ответе ФТП-сервера.
                var reader = new StreamReader(responseStream);
 
                while (!reader.EndOfStream) //объявляём цикл while в котором определяем конец файла.
                {
                    res.Add(reader.ReadLine());//считываем информацию в цикле до тех пор, пока информация не закончится.
                }
                responseStream.Close(); //прерываем занесение информации в responseStream.
                response.Close(); //прерываем соединение с фтп-сервером.
                reader.Close(); //прерываем работу StremReader.
                return res;//возвращаем значение res
            }
        }
        /// <summary>
        /// здесь создаётся интеграционный тест, который должен проверить, что данное свойство выдаёт нужное количество строк, по количеству мокят с ToDayFolderAdress на папку с известным количеством файлов.
        /// </summary>
        public List<string> TodayFileNames
        {
            get
            {
                var res = new List<string>(); //создаём переменную res в который будем заносить результат теста TodayFileNames.
                foreach (var dt in DirectoryDetailsToDay) // создаём цикл foreach 
                {
                    var sep = new char[] //создаём переменную sep
                    {
                        char.Parse(" ") //Преобразуем (пробел) в число О_О?
                    };
                    var Sarr = dt.Split(sep, StringSplitOptions.RemoveEmptyEntries); //создаём переменную Sarr делим строки на пробел
                    if (Sarr.Length > 8 && Sarr[8].Contains(".")) //проверяем содержит ли наш массив символ "."
                    {
                        res.Add(Sarr[8]);//добавляем результат в Sarr
                    }
                }
                return res; //возвращаем значение res.
            }
        }
    }
}
Добавлено через 3 минуты
Цитата Сообщение от V_Monomax Посмотреть сообщение
ради интереса в следующей строчке наберите settings, поставьте сразу точку, и посмотрите, что у вас получиться, почитайте вашу документация, а потом не забудьте удалить созданную строку
О-о-о! Вообще классная штука, сразу всё понятно, что откуда и куда! Ой знал, что не зря, знал!
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 15:54
вообще-то
Цитата Сообщение от V_Monomax Посмотреть сообщение
//здесь создается интеграционный тест, который должен проверить что данное свойство выдает нужный набор строк, например по количеству или по названиям мокят TodayFoladerAdress на папку с известным количеством файлов.
Это коментарий, на который вам необходимо обратить внимание, поэтому
Цитата Сообщение от Damenikx Посмотреть сообщение
/// <summary> /// здесь создаётся интеграционный тест, который должен проверить, что данное свойство выдаёт нужное количество строк, по количеству мокят с известным количеством строк. /// </summary>
не верно, в обоих случаях переделать!

Добавлено через 2 минуты
Цитата Сообщение от V_Monomax Посмотреть сообщение
здесь создается интеграционный тест
я подразумеваю, что вам надо взять доки, и покурить то как делаются интеграционные тесты, начните с простой встроенной библиотеки Microsoft.VisualStudio.TestTools.UnitTes ting;
Когда наберетесь опыта в таких вопросах, переходите на что-то серьезнее, пока её вам будет достаточно.

Добавлено через 5 минут
Цитата Сообщение от Damenikx Посмотреть сообщение
char.Parse(" ") //Преобразуем (пробел) в число О_О?
вообще-то преобразуем пробел в тип char, т.е. знак. Так как метод .Split(sep, StringSplitOptions.RemoveEmptyEntries); - работает только с набором знаков, то мы создаем массив
Цитата Сообщение от Damenikx Посмотреть сообщение
var sep = new char[] //создаём переменную sep { char.Parse(" ") //Преобразуем (пробел) в число О_О? };
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 16:01  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
namespace ConsoleApplication13.WTPWorker
{
    class FtpFilesInfo
    {
        /// <summary>
        /// Проверяем наличие файлов и попок по произвольной дате и заносим о них информацию в DirectoryDetailsToDay
        /// </summary>
        public List<string> DirectoryDetailsToDay
        {
            get
            {
                var res = new List<string>(); //создаём переменную res в который будем заносить результат теста DirectoryDetailsToDay.
                var settings = new FTPSettings(); //объявляем переменную settings
                var ftp = settings.RequestToDirrectoryDetails(settings.FullFTPAdressToDay); //объявляем переменную ftp. Формируем запрос к фтп-серверу и объявляем адрес папки на произвольную дату.
                var response = (FtpWebResponse)ftp.GetResponse();//объявляем переменную responce, заносим информацию об ответе сервера.
                var responseStream = response.GetResponseStream();//объявляем переменную responseStream заносим информацию об ответе ФТП-сервера.
                var reader = new StreamReader(responseStream);
 
                while (!reader.EndOfStream) //объявляём цикл while в котором определяем конец файла.
                {
                    res.Add(reader.ReadLine());//считываем информацию в цикле до тех пор, пока информация не закончится.
                }
                responseStream.Close(); //прерываем занесение информации в responseStream.
                response.Close(); //прерываем соединение с фтп-сервером.
                reader.Close(); //прерываем работу StremReader.
                return res;//возвращаем значение res
            }
        }
        /// <summary>
        /// Заносим список файлов и информацию о них в TodayFilesNames
        /// </summary>
        public List<string> TodayFileNames
        {
            get
            {
                var res = new List<string>(); //создаём переменную res в который будем заносить результат теста TodayFileNames.
                foreach (var dt in DirectoryDetailsToDay) // создаём цикл foreach 
                {
                    var sep = new char[] //создаём переменную sep
                    {
                        char.Parse(" ") //Преобразуем (пробел) в число О_О?
                    };
                    var Sarr = dt.Split(sep, StringSplitOptions.RemoveEmptyEntries); //создаём переменную Sarr делим строки на пробел
                    if (Sarr.Length > 8 && Sarr[8].Contains(".")) //проверяем содержит ли наш массив символ "."
                    {
                        res.Add(Sarr[8]);//добавляем результат в Sarr
                    }
                }
                return res; //возвращаем значение res.
            }
        }
    }
}
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 16:09
Цитата Сообщение от Damenikx Посмотреть сообщение
попок
я катаюсь под столом
Цитата Сообщение от Damenikx Посмотреть сообщение
/// <summary> /// Проверяем наличие файлов и попок по произвольной дате и заносим о них информацию в DirectoryDetailsToDay /// </summary> public List<string> DirectoryDetailsToDay
не правильно ToDay - это текущая дата.
Цитата Сообщение от Damenikx Посмотреть сообщение
/// <summary> /// Заносим список файлов и информацию о них в TodayFilesNames /// </summary> public List<string> TodayFileNames
вообще-то там только имена файлов в папке на текущий день.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.10.2018, 16:09

Скачивание файла с ftp сервера
Привет! Решил попробовать написать систему обновления для своей программы. Есть вот такая идея: создать сайт и вручную залить по ftp на...

Скачивание каталога с FTP сервера
Доброго времени суток. Работаю с FTP сервером в C# при помощи библиотеки BytesRoad.Net.Ftp. Появилась необходимость скачивать ВЕСЬ каталог...

Скачивание файлов с FTP сервера на локальный ЖД
Здравствуйте. Возникла проблема, возможно глупая и её решение должно быть элементарным, но всё же :) Добавлено через 9 минут ...

Скачивание файла с FTP-сервера с использованием Wget
Доброго времени суток! Задача - необходим батник чтобы он: 1. Скачивал необходимый файл с ftp(хранилище можем подобрать иное) 2....

Скачивание папки с удаленного сервера
WebClient wb = new WebClient(); wb.DownloadFile(&quot;https://cloud.mail.ru/public/46F4/Eqhw66Kb2&quot;, @&quot;C:\test\sandbox&quot;); Вот такой код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Закрытая тема Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru