Partager via


FileSystem.FileGetObject(Int32, Object, Int64) Méthode

Définition

Lit les données d’un fichier disque ouvert dans une variable. La fonctionnalité My améliore la productivité et les performances des opérations d’E/S de fichier par rapport à FileGetObject. Pour plus d'informations, consultez FileSystem.

public static void FileGetObject (int FileNumber, ref object Value, long RecordNumber = -1);
static member FileGetObject : int * obj * int64 -> unit
Public Sub FileGetObject (FileNumber As Integer, ByRef Value As Object, Optional RecordNumber As Long = -1)

Paramètres

FileNumber
Int32

Obligatoire. N’importe quel numéro de fichier valide.

Value
Object

Obligatoire. Nom de la variable valide dans laquelle les données sont lues.

RecordNumber
Int64

Optionnel. Numéro d'enregistrement (fichiers en mode Random) ou numéro d’octet (fichiers en mode Binary) auquel la lecture débute.

Exemples

L’exemple suivant lit un enregistrement dans un fichier de test, puis le récupère.

Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)

Remarques

La FileGetObject fonction est utilisée au lieu de pour éviter les ambiguïtés au moment de FileGet la compilation si le type Object est retourné à la place d’un autre type, tel que Integer, Long, Short, et ainsi de suite.

Si vous envisagez d’écrire le Variant type, FileGetObject est obligatoire. En cas de doute, si vous utilisez un objet pour le deuxième paramètre, il est toujours recommandé d’utiliser FilePutObject et FileGetObject.

FileGetObject est valide uniquement en Random mode et Binary .

Les données lues avec FileGetObject sont généralement écrites avec FilePutObject.

Le premier enregistrement ou octet d’un fichier se trouve à la position 1, le deuxième enregistrement ou octet est à la position 2, et ainsi de suite. Si vous omettez RecordNumber, FileGetObject lit l’enregistrement ou l’octet après la dernière FileGetObject fonction ou FilePutObject (ou pointé par la dernière Seek fonction).

Mode aléatoire

Pour les fichiers ouverts en Random mode, les règles suivantes s’appliquent :

  • Si la longueur des données lues est inférieure à la longueur spécifiée dans la RecordLength clause de la FileOpen fonction, FileGetObject lit les enregistrements suivants sur les limites de longueur d’enregistrement. L’espace entre la fin d’un enregistrement et le début de l’enregistrement suivant est rempli avec le contenu existant de la mémoire tampon de fichier. Étant donné que la quantité de données de remplissage ne peut pas être déterminée avec précision, il est judicieux de faire en sorte que la longueur de l’enregistrement corresponde à la longueur des données lues.

  • Si la variable en cours de lecture est une chaîne, lit par défaut FileGetObject un descripteur de deux octets contenant la longueur de chaîne, puis lit les données qui vont dans la variable. Par conséquent, la longueur d’enregistrement spécifiée par la RecordLength clause de la FileOpen fonction doit être supérieure d’au moins deux octets à 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 et, lors de la lecture dans un fichier, le descripteur de longueur n’est pas écrit. Si vous souhaitez lire une chaîne sans le descripteur, vous devez passer True au StringIsFixedLength paramètre , et la chaîne que vous lisez doit avoir la longueur correcte.

  • Si la variable en cours de lecture est un tableau, la longueur d’enregistrement spécifiée par le RecordLength paramètre dans la FileOpen fonction doit être supérieure ou égale à la somme de tous les octets requis pour écrire les données du tableau et le descripteur de tableau. Le descripteur spécifie le rang du tableau, la taille et les limites inférieures pour chaque classement. Sa longueur est égale à 2 plus 8 fois le nombre de dimensions : 2 + 8 * NumberOfDimensions.

    Par exemple, la déclaration de tableau suivante nécessite 218 octets lorsque le tableau est écrit sur le disque :

    Dim MyArray(4, 9) As Integer
    

    Les 218 octets sont répartis comme suit : 18 octets pour le descripteur (2 + 8 * 2) et 100 octets pour les données (5 * 10 * 4).

  • FileGetObject lit les éléments de structures comme si chacun d’eux était lu individuellement, sauf qu’il n’y a pas de remplissage entre les éléments. Sur le disque, un tableau dynamique de type défini par l’utilisateur (écrit avec FilePutObject) est préfixé par un descripteur dont la longueur est égale à 2 plus 8 fois le nombre de dimensions : 2 + 8 * NumberOfDimensions. La longueur d’enregistrement spécifiée par la RecordLength clause dans la FileOpen fonction doit être supérieure ou égale à la somme de tous les octets requis pour lire les éléments individuels, y compris les tableaux et leurs descripteurs. La VBFixedStringAttribute classe peut être appliquée aux champs de chaîne dans les structures pour indiquer la taille de la chaîne lors de l’écriture sur le disque.

Mode binaire

Pour les fichiers ouverts en Binary mode, toutes les Random règles s’appliquent, avec les exceptions suivantes :

  • La RecordLength clause dans la FileOpen fonction n’a aucun effet. FileGetObject lit toutes les variables du disque de façon contiguë, c’est-à-dire sans remplissage entre les enregistrements.

  • Pour tout tableau autre qu’un tableau dans une structure, FileGetObject lit uniquement les données. Aucun descripteur n’est lu.

FileGetObject lit des chaînes de longueur variable qui ne sont pas des éléments de structures sans attendre le descripteur de longueur de deux octets. Le nombre d’octets lus est égal au nombre de caractères déjà présents dans la chaîne.

Important

Lors de la lecture à partir de fichiers, ne prenez pas de décisions concernant le contenu d’un fichier en fonction de l’extension de nom de fichier. Par exemple, un fichier nommé Form1.vb peut ne pas être un fichier source Visual Basic.

S’applique à

Voir aussi