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

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

04.10.2018, 09:39. Показов 31587. Ответов 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
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.12.2018, 10:57  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от V_Monomax Посмотреть сообщение
почти, но он несет в себе функцию if(true) FistValue else SecondValue, и даже у него есть название, вопрос к вам какое?
фактически
C#
1
2
3
4
5
6
7
8
if(WithMinuts)
{
  return "yyyyMMddHHmm"; 
} 
else 
{
  return "yyyyMMdd";
}
Ну мы проверяем если значение и возращаем его либо с часами и минутами в противном случае только дату.
Цитата Сообщение от V_Monomax Посмотреть сообщение
еще больший бред.
смотри что такое
yyyy
MM
dd
HH
mm
в мат части.
и что такое
DateTime.ToString("yyyyMMddHHmm")
и чем оно отличается от
DateTime.ToString("yyyyMMdd")
yyyy - год
ММ - месяц
dd - дни
НН - часы
mm - минуты

C#
1
DateTime.ToString("yyyyMMddHHmm")
Формат даты с годами(2018), месяцем(12), день(04), часами(10), минутами(55)
C#
1
DateTime.ToString("yyyyMMdd")
Тут тож самое только БЕЗ часов и минут.

А с помощью ToString переводим это из формата DateTime в строковый формат.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.12.2018, 11:31
Цитата Сообщение от Damenikx Посмотреть сообщение
Ну мы проверяем если значение и возращаем его либо с часами и минутами в противном случае только дату.
какую дату???
public string DTFormat(bool WithMinuts)
с каких пор string - стал датой???
WithMinuts - какой тип???
где вы видите во всем методе DTFormat(bool WithMinuts) - хоть одно использование даты???
Вообще, что такое типы???
Как в c# можно преобразовать один тип в другой???
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.12.2018, 11:48  [ТС]
Ошибся. Не дату, а строку.

Добавлено через 4 минуты
Тип данных определяет внутреннее представление данных, множество значений, которые может принимать объект, а также допустимые действия, которые можно применять над объектом.

Цитата Сообщение от V_Monomax Посмотреть сообщение
Как в c# можно преобразовать один тип в другой???
Есть неявные преобразования.
Явные преобразования. Это явное указание типа.

Добавлено через 9 минут
Цитата Сообщение от V_Monomax Посмотреть сообщение
WithMinuts - какой тип???
Явный тип bool
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.12.2018, 11:51
Хорошо, теперь будем думать зачем нам
C#
1
2
3
4
public string DTFormat(bool WithMinuts)
{
  return WithMinuts? "yyyyMMddHHmm":"yyyyMMdd";
}
Вообще нужен?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.12.2018, 11:55  [ТС]
Я так думаю, что весь метод проверяет наличие в строке часы и минуты. Допустим если есть часы и минуты то - true если же нет - false, а результат записывает в DTFormat.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.12.2018, 12:10
Цитата Сообщение от Damenikx Посмотреть сообщение
Я так думаю, что весь метод проверяет наличие в строке часы и минуты. Допустим если есть часы и минуты то - true если же нет - false, а результат записывает в DTFormat.
не правильно думаете!
C#
1
2
3
4
5
6
7
8
9
10
11
public string DTFormat(bool WithMinuts)
{
     if(WithMinuts)
     {
       return "yyyyMMddHHmm"; 
     } 
     else 
     {
       return "yyyyMMdd";
     }
}
еще раз что делает этот метод, и для чего он нам нужен???

Добавлено через 2 минуты
подсказка:
Code
1
2
3
4
Публичная строка DTFormat(переменная типа логика СМинутами)
{
    если(СМинутами) вернуть "yyyyMMddHHmm" иначе вернуть "yyyyMMdd"
}
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.12.2018, 12:44  [ТС]
Если в строке есть минуты то вернуть "yyyyMMddHHmm" если нет то "yyyyMMdd". Возвращаем значение в зависимости от тоего есть в нём указание времени либо нет.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.12.2018, 13:57
Цитата Сообщение от Damenikx Посмотреть сообщение
Если в строке есть минуты
какие минуты???

Добавлено через 36 секунд
Цитата Сообщение от Damenikx Посмотреть сообщение
Возвращаем значение в зависимости от тоего есть в нём указание времени либо нет.
а кто ему указывает есть там минуты или нет?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.12.2018, 14:03  [ТС]
Так мы сами и указываем. Если есть дата с минутами то и указываем

Добавлено через 1 минуту
У нас файлы называются таким образом, что уже в названии они в себе содержат дату со временем. Допустим: 201812041402.txt
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.12.2018, 14:19
Цитата Сообщение от Damenikx Посмотреть сообщение
Так мы сами и указываем
хорошо, но только мы указываем что нам формат нужен с минутами или просто дата. Так?
Давайте сначала с вами сделаем алгоритмически, то что вы хотите получить, а потом реализуем в коде?
Для реализации последнего вам нужно:
Расписать текстом, что вы хотите что-бы делала программа. (Признаться честно, в голове каша, и я уже не понимаю что вы хотите сделать).
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.12.2018, 14:45  [ТС]
Итак!

Последний раз, когда я пытался сделать сам у меня получилось реализовать следующее:

1) Подключиться к ФТП-серверу на котором имеется большое количество папок с названиями. (Для более лёгкого восприятие пусть это будут названия городов). Москва, Волгоград, Киев, Ирак.
2) В каждой из папок с названием городов есть txt-файлы имя которых это дата и время. Например (201812041440).
3) У меня получилось получить список файлов лежащих на сервере после ввода названия города. Весь вывод я сделал в listBox. (Программа делается в WindowsForms).
4) Итак вопрос: с помощью метода dataTimePicker1 и dataTimePicker2 я задаю 2 даты со временем. Допустим первая дата это 2018/12/01/06:00 а вторая дата это 2018/12/04/15:00. Программа считывает все файлы в диапазоне от 2018/12/01/06:00 до 2018/12/04/15:00 и копирует на локальную машинку.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.12.2018, 15:34
Лучший ответ Сообщение было отмечено Damenikx как решение

Решение

Цитата Сообщение от Damenikx Посмотреть сообщение
Итак!
Давайте сформулируем цель и задачи:
Цель:
Мы должны скачать из папки ФТП с заранее известным именем (задается пользователем) диапазон файлов распределенный по имени.
Задачи:
1. Попросить пользователя указать нужную папку
2. Попросить указать пользователя диапазон времени
3. подключится к ФТП
4. Найти нужную папку
5. скачать с папки нужные файлы.

альтернатива:
1а. Запросить на ФТП все папки нужного уровня
2а. вывести пользователю на выбор
3а. после выбора пользователем папки, предложить выбрать диапазон дат
4а. подключится к ФТП
5а. Найти нужную папку
6а. скачать с папки нужные файлы.

Как видим набор задач достаточный для достижения поставленной цели.

Распишем в псевдокоде решение задач.


1. Запросить у пользователя имя папки
Проверить ввод пользователя
Если введенное значение не пустое тогда
Если папка существует на ФТП тогда
попросить пользователя ввести диапазон времени
иначе
Сообщить пользователю что такой папки не существует
иначе
Выдать сообщение пользователю что нужно ввести значение

2. Запрос у пользователя ввести диапазон времени

Если введенное значение диапазона больше 0 тогда
скачать файлы из диапазона
иначе скачать все файлы из папки/выдать сообщение пользователю об не возможности скачивать данные.

3. подключение к ФТП
Создать набор настроек.
Проверить наличие файлов на сервере

4.Найти нужную папку
Использовать настройки из 3
Проверить наличие папки на сервере

5.скачать с папки нужные файлы.
при помощи 3 и 4 проверить существование папки
Обратится к папке и получить детальные данные о папке.
List<string> именаФайлов
Для каждой деталь в детали
{
Если ПривестиКДате(деталь.Имя, без расширении имени файла) находится в заданном диапазоне тогда
именаФайлов.Добавить(деталь.Имя)
}
Если именаФайлов.Длина>0 тогда
скачать все именаФайлов
сообщить пользователю что именаФайлов.Длина файлов скачано
иначе сообщить пользователю об отсутствии файлов


Добавлено через 6 минут
альтернатива:

1а. Запросить на ФТП все папки нужного уровня
Сконфигурировать настройки подключения к ФТП с нужным уровнем доступа.
Запросить все папки на нужном уровне.

2а. вывести пользователю на выбор
полученное в 1а. вывести пользователю.

3а. после выбора пользователем папки, предложить выбрать диапазон дат
по нажатию на выведенное в 2а. открыть форму с диапазоном дат по нажатию кнопки одобрения, перейти к 4а.

4а. подключится к ФТП
Создать набор настроек.
Проверить наличие файлов на сервере

5а. Найти нужную папку
Использовать настройки из 3
Проверить наличие папки на сервере

6а. скачать с папки нужные файлы.

при помощи 4а и 5а проверить существование папки
Обратится к папке и получить детальные данные о папке.
List<string> именаФайлов
Для каждой деталь в детали
{
Если ПривестиКДате(деталь.Имя, без расширении имени файла) находится в заданном диапазоне тогда
именаФайлов.Добавить(деталь.Имя)
}
Если именаФайлов.Длина>0 тогда
скачать все именаФайлов
сообщить пользователю что именаФайлов.Длина файлов скачано
иначе сообщить пользователю об отсутствии файлов
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.12.2018, 15:38  [ТС]
Жесть. У меня явно мозгов для таких рассуждений не хватает)))

Добавлено через 2 минуты
Я так понимаю, к любой задаче нужно подходить именно таким образом, а не как я, тяп-ляп. Запомним и намотаем на ус...
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.12.2018, 16:06
Цитата Сообщение от Damenikx Посмотреть сообщение
Я так понимаю, к любой задаче нужно подходить именно таким образом
фактически да, это псевдоалгоритмы, которые вас будут держать в рамках, и позволят отслеживать ваши шаги.

Добавлено через 2 минуты
Для простых алгоритмов (как у вас) я обычно все это держу в голове, когда алгоритм сложнее и более витиеватый, то тогда расписываю все на бумаге, и потом пошагово реализую. Собственно, это все используется при управлении проектами при написании в команде и больших проектов.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.12.2018, 16:07  [ТС]
А теперь надо каждый из пунктов по-очерёдно выполнять. Возможно ещё и отдельными классами для каждого пункта.

Добавлено через 39 секунд
Понятно, для больших. Мои то маленькие и не проекты даже, а программы для обучения
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.12.2018, 16:16
Цитата Сообщение от Damenikx Посмотреть сообщение
А теперь надо каждый из пунктов по-очерёдно выполнять.
Зависит от желания вами создать проект или так побаловать свой мозг размышлениями.
Цитата Сообщение от Damenikx Посмотреть сообщение
Возможно ещё и отдельными классами для каждого пункта.
Зависит от того как вы подходите, есть люди, которым надо просто написать, что-бы оно работало и на том ладно, такие обычно вообще стараются все сделать в одном методе. Есть люди как я, мне важен любой проект, пусть даже и учебный, потому что, потом (а это потом как практика показывает, наступает очень быстро) что-то подобное понадобится, и вуаля, оно уже почти готово, только нужно немного поправить, а для этого используем код, а значит он должен быть легко читаем, и понятен, поэтому разбиваем на классы, методы и даже на динамические библиотечки. Итог: скорость разработки приложений увеличивается с годами.
Цитата Сообщение от Damenikx Посмотреть сообщение
Понятно, для больших
А это не исключает наличие алгоритмики.
Цитата Сообщение от Damenikx Посмотреть сообщение
Мои то маленькие и не проекты даже, а программы для обучения
читай текст выше, мотай на ус, и по поводу псевдокода:
Цитата Сообщение от V_Monomax Посмотреть сообщение
Для простых алгоритмов (как у вас) я обычно все это держу в голове
Ну и как совет, такое делать надо всегда, так жить проще, и писать программы в не зависимости для чего вы это делаете, а еще более когда для себя и в целях обучения. Так что прежде чем писать программу, напишите ее в псевдокоде на листочке, пока не научитесь держать это все в голове, ну а для массивных проектов, тут однозначно надо расписывать, разрисовывать и ориентироваться на графику.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.12.2018, 16:21  [ТС]
Понятно. тогда есть смысл заняться, как проектом (хоть и для обучения).

Надо потренироваться. Такой вариант. Если я опишу Вам тут желаемый проект, а потом попробую разобрать его на алгоритм, а вы мне скажете получилось или нет.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.12.2018, 16:26
Цитата Сообщение от Damenikx Посмотреть сообщение
а вы мне скажете получилось или нет.
скажу, но думаю я раньше вмешаюсь в этот процесс, поэтому лучше сделать пошагово, сначала, обсудить проект, накидать его алгоритм, а затем приступать к реализации.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.12.2018, 16:42  [ТС]
Как скажете. Только вот по-поводу даты я бы хотел до конца разобраться. Не бросать же то, что я почти доделал)

Добавлено через 12 минут
Алгоритм работы моей программы сейчас таков:

1) Есть 2 текстБокса в которые я ввожу имя и пароль для ФТП - соеденения. (Мы с Вами это реализовали ранее в немного другой программе если помните. Я сделал рефакторинг и применил те знание и код, который Вы любезно мне предоставили)

2) Имя папки. Имя папки вводится в третий текстБокс (Имя города, например: Москва).

3) После ввода всех 3-х текстБоксов в листБокс1 выводится вся информация о файлах находящихся в папке с именем Москва, которая лежит на ФТП.

4) Пока не получается с датами =)
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.12.2018, 17:20
Цитата Сообщение от V_Monomax Посмотреть сообщение
5.скачать с папки нужные файлы.
при помощи 3 и 4 проверить существование папки
Обратится к папке и получить детальные данные о папке.
List<string> именаФайлов
Для каждой деталь в детали
{
Если ПривестиКДате(деталь.Имя, без расширении имени файла) находится в заданном диапазоне тогда
именаФайлов.Добавить(деталь.Имя)
}
Если именаФайлов.Длина>0 тогда
скачать все именаФайлов
сообщить пользователю что именаФайлов.Длина файлов скачано
иначе сообщить пользователю об отсутствии файлов
Фактически вам нужно это реализовать.

Добавлено через 19 секунд
Цитата Сообщение от Damenikx Посмотреть сообщение
Пока не получается с датами =)
Это я к этому.

Добавлено через 1 минуту
итак шаг первый нужно проверить, существует ли такая папка вообще (вдруг пользователь ошибся).
Это сделано?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2018, 17:20

Скачивание файла с 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;); Вот такой код...


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

Или воспользуйтесь поиском по форуму:
620
Закрытая тема Создать тему
Новые блоги и статьи
Установка 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 реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru