Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344

Как определить на FTP сервере последний модифицированный файл?

15.10.2017, 15:03. Показов 2780. Ответов 15
Метки ftp (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Подскажите пожалуйста, как определить на FTP сервере последний модифицированных файл (его дата), то есть самый последний файл который был добавлен по дате.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.10.2017, 15:03
Ответы с готовыми решениями:

Как через ftp открыть файл на сервере
Есть программа, которая должна открывать файл на сервере, записывать а него данные и закрывать. Помогите с кодом пожалуйста

Как изменить файл на FTP сервере, не скачивая его
Всем доброго времени суток. Кто знает как изменить файл на FTP сервере не скачивая его?

Удалить файл на FTP сервере
Удалить файл на FTP сервере, можно ли. Если да, то как? заранее блягодарен

15
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,593
Записей в блоге: 1
15.10.2017, 15:22
UBUNTU, получить список файлов с помощью
Code
1
FtpClient
. Пройти по файлам циклом с определением даты изменения\создания
0
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
15.10.2017, 15:37  [ТС]
XIST, хорошо, сделал к примеру это, получил даты:

10.03.2017
10.06.2017

Суть в том, как понять какой новее от даты сегодняшней.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
15.10.2017, 15:44
Цитата Сообщение от UBUNTU Посмотреть сообщение
какой новее от даты сегодняшней
Какая дата больше — та и новее.
0
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
15.10.2017, 15:46  [ТС]
Замабувараев, XIST,

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Imports System.IO
 
Public Class Form1
 
    Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
        Dim request As Net.FtpWebRequest = Net.WebRequest.Create("ftp://")
        request.Credentials = New Net.NetworkCredential("Anonymous", "")
        request.Method = Net.WebRequestMethods.Ftp.ListDirectoryDetails
        Dim response As Net.FtpWebResponse = request.GetResponse()
        Dim responseStream As Stream = response.GetResponseStream()
        Dim reader As StreamReader = New StreamReader(responseStream)
        My.Computer.FileSystem.WriteAllText("D:\Test.txt", reader.ReadToEnd, True)
    End Sub
End Class
Вывод:

drwxrwxrwx 1 user group 0 Oct 6 12:16 .
drwxrwxrwx 1 user group 0 Oct 6 12:16 ..
-rw-rw-rw- 1 user group 42953480 Oct 3 11:26 Firefox Setup 41.0.exe
Это правильно? Как тут выпилить дату?
0
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,593
Записей в блоге: 1
15.10.2017, 15:49
UBUNTU, допустим files массив их. Тогда я вот тут linq увлекся чуток, так например
VB.NET
1
Dim fi = files.OrderBy(Function(f) File.GetCreationTime(f))
0
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
15.10.2017, 16:38  [ТС]
XIST, Не могу сообразить, подскажите пожалуйста листинг кода. Не силен я в net
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18294 / 14218 / 5368
Регистрация: 17.03.2014
Сообщений: 28,897
Записей в блоге: 1
15.10.2017, 17:01
UBUNTU, как-то так:
VB.NET
1
2
3
4
5
6
Dim ftpFile As FtpFileInfo = Ftp.GetFiles("ftp://ftp.fu-berlin.de/misc/movies/database/") _
    .OrderByDescending(Function(f) f.LastWriteTime) _
    .FirstOrDefault()
If ftpFile IsNot Nothing Then
    Dim name As String = ftpFile.Name
End If
Код класса Ftp взят из темы Рекурсивное скачивание папок на и с FTP в конкретную директорию
1
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,593
Записей в блоге: 1
15.10.2017, 17:02
UBUNTU,
VB.NET
1
2
3
4
5
6
7
8
9
Dim ftpRequest As FtpWebRequest
        Dim ftpResponse As FtpWebResponse
        ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails
        ftpResponse = CType(ftpRequest.GetResponse(), FtpWebResponse)
        Dim files As String = ""
        Dim sr As StreamReader = New StreamReader(ftpResponse.GetResponseStream(), System.Text.Encoding.ASCII)
        files = sr.ReadToEnd()
        sr.Close()
        ftpResponse.Close()
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18294 / 14218 / 5368
Регистрация: 17.03.2014
Сообщений: 28,897
Записей в блоге: 1
15.10.2017, 17:04
Цитата Сообщение от XIST Посмотреть сообщение
получить список файлов с помощью FtpClient
Что это за класс?
0
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
15.10.2017, 18:10  [ТС]
OwenGlendower, Спасибо большое. Вопрос, в вашем примере, вернее приведенной ссылке, как уменьшить таймаут запроса, если ссылка не доступна к примеру, происходит ожидание сек. в 10 если не ошибаюсь, потом ошибка связи с сервером тут:

Using response As FtpWebResponse = request.GetResponse()

Как можно уменьшить время ожидания?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18294 / 14218 / 5368
Регистрация: 17.03.2014
Сообщений: 28,897
Записей в блоге: 1
15.10.2017, 18:15
UBUNTU, по идее через свойство Timeout
VB.NET
1
2
3
4
5
6
7
        ...
        Dim objects As New List(Of FtpObjectInfo)
        Dim request As FtpWebRequest = WebRequest.Create(address)
        request.Method = WebRequestMethods.Ftp.ListDirectoryDetails
        request.Credentials = new NetworkCredential ("anonymous","anonymous@anonymous.com")
        request.Timeout = 5 * 1000 ' 5 sec
        ...
0
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
15.10.2017, 18:36  [ТС]
OwenGlendower, Странно, при именовании файла к примеру "upd 10.02.1.exe", имя файла видит только upd до пробела. Если "upd_10.02.1.exe" тогда нормально.

Добавлено через 18 минут
OwenGlendower, Можно ли в цикле отловить работу этого куска кода:

VB.NET
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
        Public Shared Function GetDirectoriesAndFiles(address As String) As FtpObjectInfo()
            On Error GoTo erx
            If Not address.EndsWith("/") Then address &= "/"
 
            Dim objects As New List(Of FtpObjectInfo)
            Dim request As FtpWebRequest = WebRequest.Create(address)
            request.Method = WebRequestMethods.Ftp.ListDirectoryDetails
            request.Credentials = New NetworkCredential("anonymous", "anonymous@anonymous.com")
            request.Timeout = 1000
            Using response As FtpWebResponse = request.GetResponse()
                Using responseStream As Stream = response.GetResponseStream()
                    Using reader As New StreamReader(responseStream)
 
                        Do While reader.Peek() >= 0
                            Dim responseLine() As String = reader.ReadLine().Split({" "}, StringSplitOptions.RemoveEmptyEntries)
 
                            Dim itemName As String = responseLine(8)
 
                            Dim itemDate As DateTime
                            If responseLine(7).Contains(":") Then
                                itemDate = DateTime.ParseExact(responseLine(5) & " " & responseLine(6) & " " & DateTime.Now.Year & " " & responseLine(7), "MMM d yyyy HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)
                            Else
                                itemDate = DateTime.ParseExact(responseLine(5) & " " & responseLine(6) & " " & responseLine(7), "MMM d yyyy", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)
                            End If
 
                            If responseLine(0).StartsWith("d") Then
                                objects.Add(New FtpDirectoryInfo With { _
                                    .FullName = address + itemName + "/", _
                                    .Name = itemName, _
                                    .LastWriteTime = itemDate _
                                })
                            Else
                                Dim itemLength As Long = Long.Parse(responseLine(4))
                                objects.Add(New FtpFileInfo With { _
                                    .FullName = address + itemName, _
                                    .Name = itemName, _
                                    .LastWriteTime = itemDate, _
                                    .Length = itemLength _
                                })
                            End If
                        Loop
                    End Using
                End Using
            End Using
 
            Return objects.ToArray()
erx:        MsgBox(Err.Description) : End
        End Function
Это отобразить в ProgressBar хотелось бы.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18294 / 14218 / 5368
Регистрация: 17.03.2014
Сообщений: 28,897
Записей в блоге: 1
15.10.2017, 19:17
Цитата Сообщение от UBUNTU Посмотреть сообщение
Странно, при именовании файла к примеру "upd 10.02.1.exe", имя файла видит только upd до пробела. Если "upd_10.02.1.exe" тогда нормально.
Класс незакончен. Такая ситуация там не была учтена. Возможно в твоем случае достаточно будет заменить строку №44 из примера по ссылке на
VB.NET
1
Dim responseLine() As String = reader.ReadLine().Split({" "}, 9, StringSplitOptions.RemoveEmptyEntries)
Цитата Сообщение от UBUNTU Посмотреть сообщение
Можно ли в цикле отловить работу этого куска кода:
...
Это отобразить в ProgressBar хотелось бы.
Можно. Например добавив callback метод или событие, но я этим заниматься не буду. Насчет прогресса не забывай что метод не знает сколько файлов находится на ftp и поэтому показать прогресс в стиле "получено N строк из M" не получится.
1
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
15.10.2017, 19:30  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
но я этим заниматься не буду
Да я и не просил. на всем этом огромное спасибо.
0
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,593
Записей в блоге: 1
15.10.2017, 19:46
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Что это за класс?
сам придумал)) думал-то про request
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2017, 19:46
Помогаю со студенческими работами здесь

Разместить файл на папку в FTP сервере
Здравствуйте, Вот так передаю файлы на сервер: Option Explicit Private Declare Function InternetOpen Lib "wininet.dll" Alias...

Сравнить файл на ftp сервере с локальным файлом
Думал сразу сравнить по размеру, но размеры почему-то отличаются на пару килобайт и это критично в моем случае. Каким образом можно...

Переименовать файл или папку на Ftp-сервере
Привет, собственно нужно переименовать файл или папку на Ftp Сервере, вот код client = (FtpWebRequest)FtpWebRequest.Create(new...

Чтение и запись в файл на сервере, не используя FTP
(я не знаю как правильно назвать тему) Мне нужна идея. У меня программа, которая постоянно должна получать откуда-то файлик с данными(у...

Из textbox1 сохранить текст в текстовый файл на ftp сервере
Не подскажете как это реализовать?


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru