La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours VB 2007/2008 1 Chapitre 4 Manipulation des fichiers dans le langage VB.

Présentations similaires


Présentation au sujet: "Cours VB 2007/2008 1 Chapitre 4 Manipulation des fichiers dans le langage VB."— Transcription de la présentation:

1 Cours VB 2007/ Chapitre 4 Manipulation des fichiers dans le langage VB

2 2 Cours VB – ISG 2007/2008 Plan Fichiers en VB Types de fichiers en VB: séquentiels (Textes) à accès direct Random Binary Différentes opérations de gestion de répertoires et de fichiers en VB

3 3 Cours VB – ISG 2007/2008 Introduction Un fichier est un ensemble de données qui sert soit: à la lecture : pour rentrer des informations dans un programme; à lécriture : pour sauvegarder les résultats obtenus. Les fichiers sont caractérisés par deux notions : le mode dorganisation : comment sont organisées les données dans le fichier (par enregistrement, en bloc…) le mode daccès : comment sont accédées les données dans le fichier (séquentiel, direct). Ces caractéristiques influencent lutilisation des fichiers selon les langages de programmation. La combinaison de ces derniers offre différents types de fichiers. Lutilisation dun fichier se fait toujours selon les phases suivantes : Ouverture du fichier Traitement Fermeture du fichier

4 4 Cours VB – ISG 2007/2008 I. Les fichiers en VB VB gère : Les fichiers séquentiels Les fichiers à accès direct Les noms de fichiers obéissent aux règles du DOS : La longueur est limitée à 8 caractères maximum et une extension de 3 caractères au maximum. Linstruction Open est employée pour ouvrir un fichier, sa syntaxe varie suivant le type de fichier et le mode daccès choisi. VB numérote les fichiers ouverts. Exemple : Open nom_fichier For Input As #1 affecte le n° 1 au fichier. Cest par ce numéro que lon désigne le fichier dans les instructions. A la fin du travail il faut fermer le fichier avec linstruction Close.

5 5 Cours VB – ISG 2007/2008 I.1 Syntaxe de L'instruction Open For AppendMode d'accès séquentiel qui permet aux données d'être ajoutées à la fin du fichier For InputMode d'accès séquentiel qui permet au fichier d'être lu uniquement For OutputMode d'accès séquentiel qui permet au fichier d'être écrit(écrase le fichier s'il existe déjà) For BinaryMode d'accès direct qui permet aux données d'être lues ou écrites octet par octet For RandomMode d'accès direct qui permet aux données d'être lues ou écrites dans des enregistrements déterminés par l'argument RecLength FileNameNom du fichier avec son chemin complet OPEN FileName FOR AccessMode [Lock] AS [#] FileNumber [LEN=RecLength] LockUtile pour les situations multi-utilisateurs. Les options sont : Shared, Lock Read, Lock Write et Lock Read Write FileNumberNuméro de fichier entre 1 et 511 RecLengthLa longueur de l'enregistrement pour les fichiers d'accès direct OPEN c:\fichier.txt FOR Binary AS #1 OPEN c:\fichier.txt FOR Input AS #1 OPEN c:\fichier.txt FOR Output AS #1 OPEN c:\fichier.txt FOR Append AS #1 OPEN c:\fichier.txt FOR Random AS # 1 LEN= len(Etudiant) OPEN c:\fichier.txt FOR Random Lock Read AS # 1 LEN= len(Etudiant) Séquentiel Direct

6 6 Cours VB – ISG 2007/2008 I.2 Syntaxe de L'instruction Close Lorsquon finit de travailler avec un fichier il faut le fermer avec linstruction Close. Syntaxe: Close [#] FileNumber Exemple: Close #1 Close FileNumber

7 7 Cours VB – ISG 2007/2008 I.3 Fonctions sur les fichiers La fonction FreeFile retourne un numéro disponible pour louverture dun fichier. Syntaxe: num = FreeFile La fonction LOF (Length Of File) renvoie la taille en octets d'un fichier ouvert. C'est une instruction très pratique pour lire un fichier sans connaître sa taille au départ. Syntaxe: LOF([#] NumFich) La fonction EOF (End Of File) renvoie true si c'est la fin du fichier et false sinon Syntaxe: EOF(NumFich)

8 8 Cours VB – ISG 2007/2008 II. Accès séquentiels Ce type daccès est approprié pour les fichiers textes (blocs continus) qui contiennent des caractères alphanumériques. Les fichiers séquentiels sont ouverts: soit en Input : en lecture seule ; soit en Output : en écriture à partir du début, le fichier est alors réinitialisé, il perd son contenu sil en avait ; soit encore en Append : on rajoute des informations à partir de la fin sans perdre ce quil contient déjà. Dans les fichiers textes chaque ligne est limitée par les symboles CR-LF (Retour Chariot et Fin de Ligne). A chaque accès (lecture ou écriture), on traite le fichier: caractère par caractère ou ligne par ligne.

9 9 Cours VB – ISG 2007/2008 II.1 Lecture d'un fichier séquentiel Le processus de base pour lire un fichier texte est le suivant: 1- Ouvrir le fichier en utilisant l'instruction Open nom_fichier For Input As #NumFich 2- Lire les données provenant du fichier en utilisant les instructions: 3- Fermer le fichier en utilisant l'instruction Close L=Input(n, #NumFich)Affect n caractère(s) dans L Input #num, A, B, C A, B, C (car on suppose quon a trois colonnes par ligne) Lit une ligne complète de données dans une série de variables, chaque variable étant séparée par une virgule Line Input #num, LLit une ligne complète de données délimitée par un retour chariot et un retour à la ligne (CR- LF) et affecte le résultat à L

10 10 Cours VB – ISG 2007/2008 Exemple 1: Lecture d'un fichier séquentiel Exercice: Ecrire un programme qui permet de lire soit ligne par ligne ou tout le fichier nommé "Fich_1.txt" stocké dans le lecteur E puis placez son contenu dans une zone texte d'une feuille. Solution: Propriétés du TextBox Name = TXTfile MultiLigne = True 'affichage sur plusieurs lignes ScrollBar = Both 'affichage des ascenseurs vertical et horizontal Propriétés du CommandButton 1 Name = cmdLireTout Caption = Lire tout le fichier Propriétés du CommandButton 2 Name = cmdLireLigne Caption = Lire ligne par ligne le fichier

11 11 Cours VB – ISG 2007/2008 Private Sub CMDLireTout_Click() ' Détermine un numéro de fichier valide NumFich = FreeFile ' Ouverture du fichier "Fich_1.txt" sous E: en lecture Open "E:\Fich_1.txt" For Input As #NumFich ' Affectation dans la propriété Text du contrôle TXTfile de tout le contenu du fichier TXTfile.Text = Input( LOF(NumFich), #1) Close #NumFich Fermeture du fichier End Sub L'événement Click sur le bouton de commande nommé CMDLireTout de la feuille exécutera le code suivant: Exemple 1: Lecture d'un fichier séquentiel

12 12 Cours VB – ISG 2007/2008 Private Sub CMDLireLigne_Click() Dim L As String txtFile.Text = "" ' Détermine un numéro de fichier valide num = FreeFile ' Ouverture du fichier "Fich_1.txt" sous e: en lecture Open "e:\Fich_1.txt" For Input As #num ' Affectation de tout le contenu du fichier dans la propriété Text du contrôle Txtfile Do While Not EOF(num) Line Input #num, L Txtfile.Text = Txtfile.Text &chr(13)&chr(10)& L Loop Close #1 ' Fermeture du fichier End Sub L'événement Click sur le bouton de commande nommé CMDLireLigne de la feuille exécutera le code suivant: Exemple 1: Lecture d'un fichier séquentiel

13 13 Cours VB – ISG 2007/2008 II.2 Écriture dans un fichier séquentiel Le processus de base pour écrire dans un fichier texte est le suivant: 1- Ouvrir le fichier avec l'instruction Open en utilisant le paramètre Output ou Append 2- Ecrire les données dans le fichier en utilisant les instructions: Print #num, L Ecrit une série de valeurs existant dans la chaîne de caractère L. Si on appelle print plusieurs fois alors: si l'instruction se termine par une virgule les données sont séparées par un caractère de tabulation; si l'instruction se termine par un point- virgule les données ne sont pas séparées; sinon (aucune ponctuation) les données sont séparées par un CR-LF.

14 14 Cours VB – ISG 2007/2008 Write #num, L Ecrit une série de valeurs existant dans la chaîne de caractère L et les entoure par des guillemets. Si on appelle write plusieurs fois alors: Si l'instruction se termine par un point- virgule ou virgule les données sont séparées par des virgules; Sinon (aucune ponctuation) les données sont séparées par un CR-LF. 3- Fermer le fichier II.2 Écriture dans un fichier séquentiel

15 15 Cours VB – ISG 2007/2008 Exemple 2 : Copie dun fichier Exercice : Ecrire le code qui permet de lire un fichier nommé Fich_1.txt, ligne par ligne, et dajouter son contenu dans un second fichier déjà existant nommé Fich_2.txt et dafficher le fichier résultat.

16 16 Cours VB – ISG 2007/2008 Travail à faire Écrire un programme qui donne le même résultat que la commande Input [#]NumFich, A, B, C, … mais en utilisant la commande Line input et les opérations nécessaires sur les chaînes de caractères

17 17 Cours VB – ISG 2007/2008 For Random For Binary III. Accès direct

18 18 Cours VB – ISG 2007/2008 III.1 For Random Un fichier à accès direct est un fichier comprenant un enregistrement défini par un type personnalisé. Ce type particulier est utilisé pour lire et écrire des enregistrements. C'est le type de fichiers le plus utilisé pour gérer de grandes quantités de données. On peut les ouvrir en lecture écriture à laide de linstruction Open. Ils sont par conséquent en mode Random. Il faut aussi préciser la taille de l'enregistrement. On ouvre un fichier à accès direct de la manière suivante: Open nom_fichier For Random As [#]NumFich Len=Len(VarEnreg) Où VarEnreg est la variable d'enregistrement

19 19 Cours VB – ISG 2007/2008 Lecture et écriture des fichiers daccès direct Les instruction Get et Put permettent respectivement la lecture et lécriture dans ce type de fichiers. Get [#] NumFich, [num_enreg], var_enreg ' Lit lenregistrement à la position num_enreg (ou à la position courante si ce paramètre napparaît pas) du fichier numéro numfich et le place dans la variable var_enreg Put [#] NumFich, [num_enreg], var_enreg ' Ecrit le contenu de la variable var_enreg à la position num_enreg (ou à la position courante si ce paramètre napparaît pas) dans le fichier numéro numfich. On peut accéder directement à un enregistrement en lecture écriture en utilisant linstruction Seek. Syntaxe: Seek [#] NumFich, num_enreg ' positionne le pointeur dans le fichier numéro numfich à lenregistrement num_enreg

20 20 Cours VB – ISG 2007/2008 Exemple 3: fichiers directs en mode Random Private Type ADR 'Définition d'un type personnalisé Nom As String * 30 Ville As String * 20 End Type Sub MAIN() Dim Enr As ADR 'Ouverture du fichier en accès direct Open "C:\Gestion.TXT" For Random As 1 Len = Len(Enr) 'Ecriture dans le fichier de 2 enregistrements Enr.Nom = "Mohamed" Enr.Ville = "Tunis" Put 1, 1, Enr 'Ecriture du 1ier enregistrement Enr.Nom = "Sarra" Enr.Ville = "Bizerte" Put 1, 2, Enr 'Ecriture du 2ème enregistrement Get 1, 1, Enr 'lecture du 1ier enregistrement MsgBox Enr.Nom & " " & Enr.Ville 'Visualisation des champs Get 1, 2, Enr 'lecture du 2ième enregistrement MsgBox Enr.Nom & " " & Enr.Ville 'Visualisation des champs Close 1 End Sub

21 21 Cours VB – ISG 2007/2008 III.2 For binary Louverture par for binary est appropriée si le fichier na pas de structure propre. Ce mode est utile lorsque les autres types (séquentiel, random) ne conviennent pas au problème traité. Si le fichier est ouvert en binary on a alors un accès direct se basant sur le nombre doctets précisé Ouverture en lecture écriture : Open nom_fichier For Binary As #NumFich Lecture : Get [#]NumFich, [posdebut], BinVar Remarques Posdebut: La position par où commence la lecture les commandes de lecture séquentielles (line input, Input) sont aussi possibles L'écriture dans un fichier binaire Put [#]NumFich, [posdebut], BinVar

22 22 Cours VB – ISG 2007/2008 III.2 For binary Positionnement Seek [#]NumFich, Pos Si le fichier contient des enregistrement et quon a utilisé la commande open for binary pour louvrir, cette commande permet le positionnement comme suit: Seek #NumFich, 1 : le premier Seek #NumFich, Len(Enr) : le second Seek #NumFich, Len(Enr)*2 : le troisieme … Si le fichier est un fichier texte le seek précise le nombre doctets quil doit ignorer avant de commencer la lecture

23 23 Cours VB – ISG 2007/2008 III.2 For binary Le nombre d'octets lus et écrits dépend du type de données de la variable de lecture nommée (dans cet exemple) BinVar. En général, on utilise des variables de type chaînes de caractères comme l'indique l'exemple suivant: Private Sub CMDBinaire_Click() 'On définit une variable qui sert à récupérer les données du fichier Dim BinVar As String * 10 'On ouvre le fichier en mode binaire, Open "e:\Fich_1.txt" For Binary As #1 Get 1,, BinVar 'On affiche le résultat dans la zone text1 Text1.Text = BinVar 'On ferme le fichier Close 1 End Sub Private Sub CMDBinaire_Click() 'On définit une variable qui sert à récupérer les données du fichier Dim BinVar As String 'On ouvre le fichier en mode binaire, Open "e:\Fich_1.txt" For Binary As #1 'On récupère les 100 premiers caractères BinVar = Space$(100) Get 1,, BinVar 'On affiche le résultat dans la zone text1 Text1.Text = BinVar 'On ferme le fichier Close 1 End Sub

24 24 Cours VB – ISG 2007/2008 Remarques Générales Dans les modes Binary, Input et Random, on nest pas obligé de fermer un fichier avant de l'ouvrir sous un autre numéro de fichier. Dans les modes Append et Output, on doit fermer un fichier avant de l'ouvrir avec un autre numéro de fichier. Si on ouvre un fichier texte en direct par for random alors les commandes de lecture séquentielles (input, line input, …) ne sont plus possibles

25 25 Cours VB – ISG 2007/2008 Les commandes manipulant les fichiers CommandeAction ChDirChange le répertoire courant CurDriveChange le lecteur courant DirRenvoie le nom de fichier ou un répertoire correspondant à un modèle ou à un attribut de fichier FileCopyCopie un fichier FileDateTime Renvoie la date et l'heure (temps) de la dernière modification du fichier FileLenRenvoie la taille d'un fichier en octets GetAttrRenvoie une valeur qui représente un attribut d'un fichier KillEfface un fichier MkDirCrée un nouveau répertoire NameRenomme un fichier ou répertoire RmDirEfface un répertoire vide SetAttrChange l'attribut d'un fichier

26 26 Cours VB – ISG 2007/2008 Exercice Écrire le code des deux boutons de commande.


Télécharger ppt "Cours VB 2007/2008 1 Chapitre 4 Manipulation des fichiers dans le langage VB."

Présentations similaires


Annonces Google