Manipulation de fichier et répertoire

Manipulation de fichier et répertoire

Messagepar Stephane Maillard » 05 Juil 2005 à 12:16

Bonjour,

Bibliothèque de script de manipulation de fichier, elle fonctionne à partir de Winnt 3.5x jusqu´à Winnt3K :
Code : Tout sélectionner
 Option Public
Option Explicit

´ Type système
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Public Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pForm As String
pTo As String
fFlags As Integer
fAborted As Variant
hNameMaps As Long
sProgress As String
End Type

Public Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSeconde As Integer
wMilliseconds As Integer
End Type

´ Constante système
Public Const GENERIC_WHITE = &H40000000
Public Const OPEN_EXISTING = 3
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WHITE = &H2
Public Const FO_DELETE = &H3

´ API´s (mes pôtes)
´ =================

´ Copie de fichier
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" ( _
Byval lpExistingFileName As String, _
Byval lpNewFileName As String, _
Byval bFailIfExits As Long) As Long

´ Création de répertoire
Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" ( _
Byval lpPathName As String, _
lpSecurityAttributes As Long) As Long

´ Suppression de fichier
Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" ( _
Byval lpFileName As String) As Long

´ Taille d´un fichier
Declare Function GetFileSize Lib "kernel32" ( _
Byval hFile As Long, lpFileSizeHigh As Long) As Long

´ Heure de création,
´ dernier accès et enfin dernière fois ou il à été enregistré
Declare Function GetFileTime Lib "kernel32" ( _
Byval hFile As Long, _
lpCreationTime As FILETIME, _
lpLastAccessTime As FILETIME, _
lpLastWriteTime As FILETIME) As Long

´ Déplacer ou renommer un fichier
Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" ( _
Byval lpExistingFileName As String, _
Byval lpNewFileName As String) As Long

´ Création de fichier ou
´ Ouverture de fichier si existant
Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
Byval lpFileName As String, _
Byval dwDesiredAccess As Long, _
Byval dwShareMode As Long, _
lpSecurityAttributes As Long, _
Byval dwCreationDisposition As Long, _
Byval dwFlagsAndAttributes As Long, _
Byval dwhTemplateFile As Long) As Long

´ Cloture de handle (ici fermeture de fichier)
Declare Function CloseHandle Lib "kernel32" ( _
Byval hObject As Long) As Long

´ Différentes opérations sur les fichiers et répertoire
´ (ici suppression d´un répertoire)
Declare Function SHFileOperation Lib "shell32" Alias "SHFileOperationA" ( _
lpFileOp As SHFILEOPSTRUCT) As Long

´ Convertion heure fichier en heure système
Declare Function FileTimeToSystemTime Lib "kernel32" ( _
lpFileTime As FILETIME, _
lpSystemTime As SYSTEMTIME) As Long

´ Convertion heure fichier en heure local
Declare Function FileTimeToLocalFileTime Lib "kernel32" ( _
lpFileTime As FILETIME, _
lpLocalFileTime As FILETIME) As Long


Exemple d´utilisation :
Code : Tout sélectionner
 Option Public
Use "NomDeLaBibliothèque"

Sub Initialize
Dim lngHandle As Long
Dim SHDirOp As SHFILEOPSTRUCT
Dim lngLong As Long
Dim Ft1 As FILETIME
Dim Ft2 As FILETIME
Dim SysTime As SYSTEMTIME

´ Créer un nouveau répertoire
CreateDirectory "C:\TestOpFichier", Byval &H0

´ Copie d´un fichier (Il faut que le fichier soit éxistant)
CopyFile "C:\Test.txt", "C:\TestOpFichier\Test.txt", 0

´ Renommer un fichier
MoveFile "C:\TestOpFichier\Test.txt", "C:\TestOpFichier\Test.old"

´ Ouvrir le fichier
lngHandle = CreateFile("C:\TestOpFichier\Test.old", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, Byval 0&, OPEN_EXISTING, 0, 0)

´ Récupère la taille du fichier
Msgbox "La taille du fichier est de : " + Str(GetFileSize(lngHandle, lngLong)) + " bytes."

´ Récupère les heures du fichier
GetFileTime lngHandle, Ft1, Ft1, Ft2

´ Convertion heures
FileTimeToLocalFileTime Ft2, Ft1
FileTimeToSystemTime Ft1, SysTime

Msgbox "Le fichier à été créé le : " + Str(SysTime.wDay) + "/" + Ltrim(Str(SysTime.wMonth)) + "/" + Ltrim(Str(SysTime.wYear))

´ Fermeture du fichier
CloseHandle lngHandle

´ Suppression du fichier
DeleteFile "C:\TestOpFichier\Test.old"

´ Suppression du répertoire de test
SHDirOp.wFunc = FO_DELETE
SHDirOp.pForm = "C:\TestOpFichier"
SHFileOperation SHDirOp
End Sub
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Retour vers API