Récupérer la date de dernière modification d'un fichier sur un serveur FTP.
1 réponse
JMV
Bonjour,
Voici un problème que je n'arrive pas à résoudre et pour lequel je sollicite
votre expertise.
J'essaie de récupérer la date de dernière modification d'un fichier sur un
serveur FTP.
Pour cela, j'utilise le code suivant :
Module TEST
Public Const MAX_PATH As Short = 260
Public Structure FILETIME
Public dwLowDateTime As Integer
Public dwHighDateTime As Integer
End Structure
Public Structure WIN32_FIND_DATA
Public dwFileAttributes As Integer
Public ftCreationTime As FILETIME
Public ftLastAccessTime As FILETIME
Public ftLastWriteTime As FILETIME
Public nFileSizeHigh As Integer
Public nFileSizeLow As Integer
Public dwReserved0 As Integer
Public dwReserved1 As Integer
<System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.Unm
anagedType.ByValTStr, SizeConst:=MAX_PATH)> _
Public cFileName As String
<System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.Unm
anagedType.ByValTStr, SizeConst:=14)> _
Public cAlternateFileName As String
End Structure
Public Structure SYSTEMTIME
Public wYear As Integer
Public wMonth As Integer
Public wDayOfWeek As Integer
Public wDay As Integer
Public wHour As Integer
Public wMinute As Integer
Public wSecond As Integer
Public wMilliseconds As Integer
End Structure
Public Declare Function FileTimeToLocalFileTime Lib "kernel32" ( _
ByVal lpFileTime As FILETIME, _
ByVal lpLocalFileTime As FILETIME) As Long
Public Declare Function FileTimeToSystemTime Lib "kernel32" ( _
ByVal lpFileTime As FILETIME, _
ByVal lpSystemTime As SYSTEMTIME) As Long
Function testdate1()
Dim fData As WIN32_FIND_DATA
Dim St As SYSTEMTIME
Dim Ft1 As FILETIME
Dim Ft2 As FILETIME
Lorsque je fais tourner ce code, je récupère bien dans la structure fData
les paramètres qui m'interessent :
fData.cFileName : Contient le nom du fichier concerné,
fData.nFileSizeLow : Contient la taille du fichier.
fData.ftCreationTime et fData.ftLastAccessTime = 0 (ce qui d'après ce que
j'ai lu sur Internet semble
cohérent).
En revanche, fData.fLastWriteTime n'est pas vide.
La structure FILETIME associée à fLastWriteTime contient les valeurs :
Ceci m'amène à vous poser une première question : Est-ce que les valeurs
ci-dessus vous
semblent correctes ?
Lorsque j'exécute le code de la fonction testdate1(), j'obtient lors de
l'exécution
de FileTimeToLocalFileTime(Ft1, Ft2) le message d'erreur suivant :
"Une exception non gérée du type 'System.NullReferenceException' s'est
produite dans
toto.exe.
La référence d'objet n'est pas définie à une instance d'un objet".
Voila.
Merci d'avance pour toute aide que vous pourrez m'apporter.
Voici un problème que je n'arrive pas à résoudre et pour lequel je
sollicite
votre expertise.
J'essaie de récupérer la date de dernière modification d'un fichier sur un serveur FTP.
Pour cela, j'utilise le code suivant :
Module TEST
Public Const MAX_PATH As Short = 260
Public Structure FILETIME Public dwLowDateTime As Integer Public dwHighDateTime As Integer End Structure
Public Structure WIN32_FIND_DATA Public dwFileAttributes As Integer Public ftCreationTime As FILETIME Public ftLastAccessTime As FILETIME Public ftLastWriteTime As FILETIME Public nFileSizeHigh As Integer Public nFileSizeLow As Integer Public dwReserved0 As Integer Public dwReserved1 As Integer
anagedType.ByValTStr, SizeConst:)> _ Public cAlternateFileName As String End Structure
Public Structure SYSTEMTIME Public wYear As Integer Public wMonth As Integer Public wDayOfWeek As Integer Public wDay As Integer Public wHour As Integer Public wMinute As Integer Public wSecond As Integer Public wMilliseconds As Integer End Structure
Public Declare Function FileTimeToLocalFileTime Lib "kernel32" ( _ ByVal lpFileTime As FILETIME, _ ByVal lpLocalFileTime As FILETIME) As Long
Public Declare Function FileTimeToSystemTime Lib "kernel32" ( _ ByVal lpFileTime As FILETIME, _ ByVal lpSystemTime As SYSTEMTIME) As Long
Function testdate1()
Dim fData As WIN32_FIND_DATA Dim St As SYSTEMTIME Dim Ft1 As FILETIME Dim Ft2 As FILETIME
Lorsque je fais tourner ce code, je récupère bien dans la structure fData les paramètres qui m'interessent :
fData.cFileName : Contient le nom du fichier concerné, fData.nFileSizeLow : Contient la taille du fichier. fData.ftCreationTime et fData.ftLastAccessTime = 0 (ce qui d'après ce que j'ai lu sur Internet semble cohérent).
En revanche, fData.fLastWriteTime n'est pas vide. La structure FILETIME associée à fLastWriteTime contient les valeurs :
Ceci m'amène à vous poser une première question : Est-ce que les valeurs ci-dessus vous semblent correctes ?
Lorsque j'exécute le code de la fonction testdate1(), j'obtient lors de l'exécution de FileTimeToLocalFileTime(Ft1, Ft2) le message d'erreur suivant :
"Une exception non gérée du type 'System.NullReferenceException' s'est produite dans toto.exe. La référence d'objet n'est pas définie à une instance d'un objet".
Voila.
Merci d'avance pour toute aide que vous pourrez m'apporter.
Jean-Marc
Bonjour,
Un intervenant sur un autre forum m'a proposé cette solution qui résoud le
problème.
J'utilise la fonction ci-dessous en lei et place de la fonction
FileTimeToLocalFileTime.
Private Function FileTimeToDate(ByVal ft As FILETIME) As Date
' FILETIME units are 100s of nanoseconds.
Const TICKS_PER_SECOND = 10000000
Dim lo_time As Double
Dim hi_time As Double
Dim seconds As Double
Dim hours As Double
Dim the_date As Date
' Get the low order data.
If ft.dwLowDateTime < 0 Then
lo_time = 2 ^ 31 + (ft.dwLowDateTime And &H7FFFFFFF)
"JMV" <jmviolet@wanadoo.fr> a écrit dans le message de
news:uPg9UrlyFHA.2064@TK2MSFTNGP09.phx.gbl...
Bonjour,
Voici un problème que je n'arrive pas à résoudre et pour lequel je
sollicite
votre expertise.
J'essaie de récupérer la date de dernière modification d'un fichier sur un
serveur FTP.
Pour cela, j'utilise le code suivant :
Module TEST
Public Const MAX_PATH As Short = 260
Public Structure FILETIME
Public dwLowDateTime As Integer
Public dwHighDateTime As Integer
End Structure
Public Structure WIN32_FIND_DATA
Public dwFileAttributes As Integer
Public ftCreationTime As FILETIME
Public ftLastAccessTime As FILETIME
Public ftLastWriteTime As FILETIME
Public nFileSizeHigh As Integer
Public nFileSizeLow As Integer
Public dwReserved0 As Integer
Public dwReserved1 As Integer
anagedType.ByValTStr, SizeConst:)> _
Public cAlternateFileName As String
End Structure
Public Structure SYSTEMTIME
Public wYear As Integer
Public wMonth As Integer
Public wDayOfWeek As Integer
Public wDay As Integer
Public wHour As Integer
Public wMinute As Integer
Public wSecond As Integer
Public wMilliseconds As Integer
End Structure
Public Declare Function FileTimeToLocalFileTime Lib "kernel32" ( _
ByVal lpFileTime As FILETIME, _
ByVal lpLocalFileTime As FILETIME) As Long
Public Declare Function FileTimeToSystemTime Lib "kernel32" ( _
ByVal lpFileTime As FILETIME, _
ByVal lpSystemTime As SYSTEMTIME) As Long
Function testdate1()
Dim fData As WIN32_FIND_DATA
Dim St As SYSTEMTIME
Dim Ft1 As FILETIME
Dim Ft2 As FILETIME
Lorsque je fais tourner ce code, je récupère bien dans la structure fData
les paramètres qui m'interessent :
fData.cFileName : Contient le nom du fichier concerné,
fData.nFileSizeLow : Contient la taille du fichier.
fData.ftCreationTime et fData.ftLastAccessTime = 0 (ce qui d'après ce que
j'ai lu sur Internet semble
cohérent).
En revanche, fData.fLastWriteTime n'est pas vide.
La structure FILETIME associée à fLastWriteTime contient les valeurs :
Ceci m'amène à vous poser une première question : Est-ce que les valeurs
ci-dessus vous
semblent correctes ?
Lorsque j'exécute le code de la fonction testdate1(), j'obtient lors de
l'exécution
de FileTimeToLocalFileTime(Ft1, Ft2) le message d'erreur suivant :
"Une exception non gérée du type 'System.NullReferenceException' s'est
produite dans
toto.exe.
La référence d'objet n'est pas définie à une instance d'un objet".
Voila.
Merci d'avance pour toute aide que vous pourrez m'apporter.
Voici un problème que je n'arrive pas à résoudre et pour lequel je
sollicite
votre expertise.
J'essaie de récupérer la date de dernière modification d'un fichier sur un serveur FTP.
Pour cela, j'utilise le code suivant :
Module TEST
Public Const MAX_PATH As Short = 260
Public Structure FILETIME Public dwLowDateTime As Integer Public dwHighDateTime As Integer End Structure
Public Structure WIN32_FIND_DATA Public dwFileAttributes As Integer Public ftCreationTime As FILETIME Public ftLastAccessTime As FILETIME Public ftLastWriteTime As FILETIME Public nFileSizeHigh As Integer Public nFileSizeLow As Integer Public dwReserved0 As Integer Public dwReserved1 As Integer
anagedType.ByValTStr, SizeConst:)> _ Public cAlternateFileName As String End Structure
Public Structure SYSTEMTIME Public wYear As Integer Public wMonth As Integer Public wDayOfWeek As Integer Public wDay As Integer Public wHour As Integer Public wMinute As Integer Public wSecond As Integer Public wMilliseconds As Integer End Structure
Public Declare Function FileTimeToLocalFileTime Lib "kernel32" ( _ ByVal lpFileTime As FILETIME, _ ByVal lpLocalFileTime As FILETIME) As Long
Public Declare Function FileTimeToSystemTime Lib "kernel32" ( _ ByVal lpFileTime As FILETIME, _ ByVal lpSystemTime As SYSTEMTIME) As Long
Function testdate1()
Dim fData As WIN32_FIND_DATA Dim St As SYSTEMTIME Dim Ft1 As FILETIME Dim Ft2 As FILETIME
Lorsque je fais tourner ce code, je récupère bien dans la structure fData les paramètres qui m'interessent :
fData.cFileName : Contient le nom du fichier concerné, fData.nFileSizeLow : Contient la taille du fichier. fData.ftCreationTime et fData.ftLastAccessTime = 0 (ce qui d'après ce que j'ai lu sur Internet semble cohérent).
En revanche, fData.fLastWriteTime n'est pas vide. La structure FILETIME associée à fLastWriteTime contient les valeurs :
Ceci m'amène à vous poser une première question : Est-ce que les valeurs ci-dessus vous semblent correctes ?
Lorsque j'exécute le code de la fonction testdate1(), j'obtient lors de l'exécution de FileTimeToLocalFileTime(Ft1, Ft2) le message d'erreur suivant :
"Une exception non gérée du type 'System.NullReferenceException' s'est produite dans toto.exe. La référence d'objet n'est pas définie à une instance d'un objet".
Voila.
Merci d'avance pour toute aide que vous pourrez m'apporter.