FileGet, fonction
Mise à jour : novembre 2007
Lit les données d'un fichier disque ouvert et les place dans une variable.
La fonctionnalité My permet de fournir une meilleure productivité et d'obtenir de meilleures performances en termes d'opérations d'E/S de fichier par rapport à FileGet. Pour plus d'informations, consultez My.Computer.FileSystem, objet.
Public Overloads Sub FileGet( _
ByVal FileNumber As Integer, _
ByRef Value As Object, _
Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
ByVal FileNumber As Integer, _
ByRef Value As Short, _
Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
ByVal FileNumber As Integer, _
ByRef Value As Integer, _
Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
ByVal FileNumber As Integer, _
ByRef Value As Single, _
Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
ByVal FileNumber As Integer, _
ByRef Value As Double, _
Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
ByVal FileNumber As Integer, _
ByRef Value As Decimal, _
Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
ByVal FileNumber As Integer, _
ByRef Value As Byte, _
Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
ByVal FileNumber As Integer, _
ByRef Value As Boolean, _
Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
ByVal FileNumber As Integer, _
ByRef Value As Date, _
Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
ByVal FileNumber As Integer, _
ByRef Value As System.Array, _
Optional RecordNumber As Integer = -1, _
Optional ArrayIsDynamic As Boolean = False _
)
' -or-
Public Overloads Sub FileGet(
ByVal FileNumber As Integer, _
ByRef Value As String, _
Optional RecordNumber As Integer = -1, _
Optional StringIsFixedLength As Boolean = False _
)
Paramètres
FileNumber
Requis. Tout numéro de fichier valide.Value
Requis. Nom de variable valide destiné à recevoir les données lues.RecordNumber
Facultatif. Numéro de l'enregistrement (fichiers ouverts en mode Random) ou de l'octet (fichiers ouverts en mode Binary) par lequel la lecture débute.ArrayIsDynamic
Facultatif. S'applique uniquement à l'écriture d'un tableau. Spécifie si le tableau doit être considéré comme dynamique et si un descripteur de tableau décrivant la taille et les limites du tableau s'avère nécessaire.StringIsFixedLength
Facultatif. S'applique uniquement lors de l'écriture d'une chaîne. Spécifie s'il est nécessaire d'écrire un descripteur à deux octets pour la chaîne qui décrit la longueur. La valeur par défaut est False.
Exceptions
Type d'exception |
Numéro de l'erreur |
Condition |
---|---|---|
RecordNumber est inférieur à 1 et différent de -1. |
||
FileNumber n'existe pas. |
||
Le mode de fichier est non valide. |
Consultez la colonne « Numéro d'erreur » si vous mettez à niveau des applications Visual Basic 6.0 qui utilisent la gestion des erreurs non structurée. (Vous pouvez comparer le numéro d'erreur par rapport à Number, propriété (objet Err).) Toutefois, lorsque cela est possible, vous devez envisager de remplacer un tel contrôle d'erreurs par Vue d'ensemble de la gestion structurée des exceptions pour Visual Basic.
Notes
FileGet est seulement valide en mode Random et Binary.
Les données lues à l'aide de la fonction FileGet sont généralement écrites dans un fichier avec la fonction FilePut.
Le premier enregistrement ou octet d'un fichier occupe la position 1, le deuxième enregistrement ou octet la position 2, et ainsi de suite. Si l'argument RecordNumber est omis, la lecture commence à partir de l'enregistrement ou de l'octet suivant la dernière fonction FileGet ou FilePut (ou à partir de celui désigné par la dernière fonction Seek).
Note de sécurité : |
---|
Lors de la lecture de fichiers, ne décidez pas du contenu d'un fichier en vous basant sur l'extension de son nom. Par exemple, un fichier nommé Form1.vb peut ne pas être un fichier source Visual Basic. |
Mode Random
Les règles suivantes s'appliquent aux fichiers ouverts en mode Random :
Si la longueur des données lues est inférieure à la longueur spécifiée dans la clause RecordLength de la fonction FileOpen, la fonction FileGet poursuit la lecture des enregistrements suivants conformément aux limites de longueur des enregistrements. L'espace compris entre la fin d'un enregistrement et le début de l'enregistrement suivant est rempli par le contenu existant de la mémoire tampon du fichier. Comme il est impossible de déterminer avec certitude le volume des données de remplissage, il est généralement préférable que la longueur des enregistrements corresponde à la longueur des données lues.
Par défaut, si la variable lue est une chaîne, FileGet lit un descripteur à deux octets qui contient la longueur de la chaîne, puis les données de la variable. La longueur d'enregistrement spécifiée par la clause RecordLength de la fonction FileOpen doit donc être supérieure d'au moins deux octets par rapport à la longueur réelle de la chaîne. Visual Basic 6.0 et les versions antérieures prennent en charge les chaînes de longueur fixe ; lors de leur écriture dans un fichier, le descripteur de longueur n'est pas écrit. Si vous souhaitez lire une chaîne sans descripteur, vous devez passer la valeur True au paramètre StringIsFixedLength de sorte que la chaîne lue soit de la longueur voulue.
Si la variable lue est un tableau, vous pouvez au besoin lire un descripteur de la taille et des dimensions du tableau. Pour écrire le descripteur, affectez la valeur True au paramètre ArrayIsDynamic. Lors de la lecture du tableau, vous devez vous conformer à la manière dont il a été écrit. Si le tableau a été écrit avec le descripteur, vous devez lire le descripteur. Si le descripteur n'est pas employé, la taille et les limites du tableau passées à FileGet déterminent ce qu'il faut lire.
Le descripteur spécifie le rang du tableau, la taille et les limites inférieures de chaque rang. Sa longueur est égale à 2 plus 8 fois le nombre de dimensions : (2 + 8 * NumberOfDimensions). La longueur d'enregistrement spécifiée par le paramètre RecordLength dans la fonction FileOpen doit être supérieure ou égale à la somme de tous les octets nécessaires à l'écriture des données et du descripteur du tableau. Par exemple, la déclaration de tableau suivante nécessite 218 octets pour l'écriture du tableau sur le disque.
Dim MyArray(4,9) As Integer
Les 218 octets sont distribués comme suit :
18 octets pour le descripteur : (2 + 8 * 2)
200 octets pour les données : (5 * 10 * 4).
Si la variable lue est un autre type de variable (ni une chaîne de longueur variable ni un objet), la fonction FileGet ne lit que les données variables. La longueur d'enregistrement spécifiée par la clause RecordLength dans la fonction FileOpen doit être supérieure ou égale à la longueur des données lues.
La fonction FileGet lit les éléments de structures comme si chacun d'eux était lu de façon individuelle, à ceci près qu'il n'y a pas de remplissage entre les éléments. Sur un disque, un tableau dynamique d'un type défini par l'utilisateur (écrit avec la fonction FilePut) est préfixé d'un descripteur dont la longueur est égale à 2 plus 8 fois le nombre de dimensions : (2 + 8 * NumberOfDimensions). La longueur d'enregistrement définie par la clause RecordLength dans la fonction FileOpen doit être supérieure ou égale à la somme de tous les octets requis pour lire les éléments individuels. Cela inclut les tableaux et leurs descripteurs. L'attribut VBFixedString peut être appliqué aux champs de type chaîne dans les structures pour indiquer la taille d'une chaîne lors de l'écriture sur le disque.
Mode Binary
Pour les fichiers ouverts en mode Binary, la plupart des règles du mode Random s'appliquent, à quelques exceptions près. Les règles suivantes pour les fichiers ouverts en mode Binary diffèrent des règles appliquées au mode Random :
La clause RecordLength de la fonction FileOpen n'a aucun effet. FileGet lit toutes les variables du disque de manière contiguë, c'est-à-dire sans remplissage entre les enregistrements.
Pour tout tableau autre que les tableaux d'une structure, la fonction FileGet ne lit que les données. Elle ne lit aucun descripteur.
FileGet lit les chaînes de longueur variable qui ne sont pas des éléments de structures, sans rechercher le descripteur de longueur à deux octets. Le nombre d'octets lus est égal au nombre de caractères de la chaîne.
Note de sécurité : La lecture d'un fichier à l'aide de la fonction FileGet requiert l'accès Read à partir de l'énumération FileIOPermissionAccess.
Notes du développeur sur Smart Device
Cette fonction n'est pas prise en charge.
Configuration requise
Espace de noms :Microsoft.VisualBasic
**Module :**FileSystem
**Assembly :**bibliothèque Visual Basic Runtime (dans Microsoft.VisualBasic.dll)