Retrouve la date de création d'un fichier - api

Contenu du snippet

Une petite procédure très simple pour retrouver la date, l'heure de création d'un fichier avec les API.

Testé sous Win98 et 2000.

Source / Exemple :


'*****Dans une form*****
Dim Fichier_Path As String: Fichier_Path = ""
Dim Fichier_Existe As Boolean: Fichier_Existe = False
Dim Fichier_Date As String: Fichier_Date = ""

'**Fichier cible : test.txt**
If Right(App.Path, 1) <> "\" Then
  Fichier_Path = App.Path & "\" & "test.txt"
Else
  Fichier_Path = App.Path & "test.txt"
End If
Call Date_File(Fichier_Path, Fichier_Existe, Fichier_Date)

'*****On peut mettre le reste dans un module*****

Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

Private Const MAX_PATH = 260

Private Type FILETIME
   dwLowDateTime As Long
   dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
   dwFileAttributes As Long
   ftCreationTime As FILETIME
   ftLastAccessTime As FILETIME
   ftLastWriteTime As FILETIME
   nFileSizeHigh As Long
   nFileSizeLow As Long
   dwReserved0 As Long
   dwReserved1 As Long
   cFileName As String * MAX_PATH
   cAlternate As String * 14
End Type

Private Type SYSTEMTIME
   wYear As Integer
   wMonth As Integer
   wDayOfWeek As Integer
   wDay As Integer
   wHour As Integer
   wMinute As Integer
   wSecond As Integer
   wMilliseconds As Integer
End Type

Public Sub Date_File(Chemin_File As String, Existe_File As Boolean, Date_File As String)

If Dir(Chemin_File, vbNormal) = "" Then 'Le fichier n'existe pas
  Existe_File = False
  Exit Sub
Else 'Le fichier existe
  Existe_File = True
End If

Dim Info_Fichier As WIN32_FIND_DATA
'**Localise/identifie le fichier sur le disque et Info_Fichier reçoit les informations**
Call FindClose(FindFirstFile(UCase(Chemin_File), Info_Fichier))

Dim ft As FILETIME
'**Convertion de la date UTC en temps locale**
Call FileTimeToLocalFileTime(Info_Fichier.ftCreationTime, ft)

Dim st As SYSTEMTIME
'**Convertion en date et heure system**
Call FileTimeToSystemTime(ft, st)

'**Date_File récupére la date sous forme : "11/11/2004"**
Date_File = st.wDay & "/" & st.wMonth & "/" & st.wYear

'**Autre exemple date et heure sous la forme "jeudi 11 novembre 2004 14:11:23"**
Dim FileTimeToDouble As Double
Dim FormatFileDate As String
'Renvoie la date correspondant au jour, au mois, à l'année indiqués etc...
FileTimeToDouble = DateSerial(st.wYear, st.wMonth, st.wDay) + TimeSerial(st.wHour, st.wMinute, st.wSecond)

'Format la date de type sous forme : "jeudi 11 novembre 2004 14:11:23"
FormatFileDate = Format(FileTimeToDouble, "long date") & " " & Format(FileTimeToDouble, "long time")

End Sub

Conclusion :


Rien de difficile mais peut être utile au débutant

Avec qq modifications on peut retrouver la date de modification ou du dernier accès du fichier.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.