FileSystem.FilePut, méthode (Int32, Int32, Int64)
Écrit les données d'une variable dans un fichier sur disque. La fonctionnalité My permet une meilleure productivité et de meilleures performances dans les opérations d'E/S de fichier que FilePut. Pour plus d'informations, consultez My.Computer.FileSystem, objet.
Espace de noms : Microsoft.VisualBasic
Assembly : Microsoft.VisualBasic (dans microsoft.visualbasic.dll)
Syntaxe
'Déclaration
Public Shared Sub FilePut ( _
FileNumber As Integer, _
Value As Integer, _
<OptionalAttribute> Optional RecordNumber As Long = -1 _
)
'Utilisation
Dim FileNumber As Integer
Dim Value As Integer
Dim RecordNumber As Long
FileSystem.FilePut(FileNumber, Value, RecordNumber)
public static void FilePut (
int FileNumber,
int Value,
[OptionalAttribute] long RecordNumber
)
public:
static void FilePut (
int FileNumber,
int Value,
[OptionalAttribute] long long RecordNumber
)
public static void FilePut (
int FileNumber,
int Value,
/** @attribute OptionalAttribute() */ long RecordNumber
)
public static function FilePut (
FileNumber : int,
Value : int,
RecordNumber : long
)
Paramètres
- FileNumber
Obligatoire. Tout numéro de fichier valide.
- Value
Obligatoire. Nom de variable valide contenant les données écrites sur le disque.
- RecordNumber
Facultatif. Numéro de l'enregistrement (fichiers ouverts en mode Random) ou de l'octet (fichiers ouverts en mode Binary) par lequel l'écriture débute.
Notes
Pour plus d'informations, consultez la rubrique Visual Basic FilePut, fonction.
FilePut n'est valide qu'en mode Random et Binary.
Les données écrites à l'aide de la fonction FilePut sont généralement lues dans un fichier avec la fonction FileGet.
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, l'écriture commence à partir de l'enregistrement ou de l'octet suivant la dernière fonction FileGet ou FilePut (ou à partir de l'enregistrement ou de l'octet désigné par la dernière fonction Seek).
L'argument StringIsFixedLength contrôle si la fonction interprète des chaînes comme variables ou à longueur fixe. FilePut n'écrit pas le descripteur de longueur lorsque l'argument est True. Si vous utilisez StringIsFixedLength = True avec FilePut, vous devez faire de même avec FileGet et vous assurer en outre que la chaîne est initialisée à la longueur attendue.
Mode Random
Les règles suivantes s'appliquent aux fichiers ouverts en mode Random :
Si la longueur des données écrites est inférieure à la longueur spécifiée dans la clause RecordLength de la fonction FileOpen, FilePut poursuit l'écriture 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 écrites. Une exception est levée si la longueur des données écrites est supérieure à la longueur spécifiée dans la clause RecordLength de la fonction FileOpen.
Si la variable écrite est une chaîne, FilePut écrit d'abord un descripteur à deux octets contenant la longueur de la chaîne, puis les données qui sont placées dans 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 à la longueur réelle de la chaîne.
Si la variable écrite est un objet contenant un type numérique, FilePut écrit les deux octets identifiant le VarType de l'objet, puis écrit la variable. Par exemple, lors de l'écriture d'un objet contenant un entier, FilePut écrit six octets : deux octets identifiant l'objet comme VarType(3) (Integer) et quatre octets contenant les données. La longueur d'enregistrement spécifiée par le paramètre RecordLength dans la fonction FileOpen doit être supérieure d'au moins deux octets au nombre réel d'octets requis pour stocker la variable.
Si la variable écrite est un objet contenant une chaîne, FilePut écrit un descripteur à deux octets identifiant le VarType(8) de l'objet, un descripteur à deux octets indiquant la longueur de la chaîne, puis la chaîne de données. La longueur d'enregistrement spécifiée par le paramètre RecordLength dans la fonction FileOpen doit être supérieure d'au moins quatre octets à la longueur réelle de la chaîne. Si vous souhaitez placer une chaîne sans descripteur, vous devez passer la valeur True au paramètre StringIsFixedLength et la chaîne lue doit être de la longueur voulue.
Si la variable écrite est un tableau, vous avez la possibilité d'écrire ou non un descripteur de la taille et des dimensions du tableau. Visual Basic 6.0 et les versions antérieures écrivent le descripteur de fichier pour un tableau dynamique, mais pas pour un tableau de taille fixe. Par défaut, Visual Basic 2005 n'écrit pas le descripteur. Pour écrire le descripteur, affectez la valeur True au paramètre ArrayIsDynamic. Lorsque vous écrivez le tableau, vous devez faire correspondre le mode de lecture du tableau ; s'il est lu avec le descripteur, vous devez écrire ce dernier. 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 la clause 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 118 octets pour l'écriture du tableau sur le disque.
Dim MyArray(4,9) As Integer
Si la variable écrite est un autre type de variable (ni une chaîne de longueur variable ni un objet), FilePut n'écrit 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 écrites.
FilePut écrit les éléments de structures comme si chacun d'entre eux était écrit individuellement, sauf qu'il n'y a pas de remplissage entre les éléments. L'attribut VBFixedString peut être appliqué aux champs de type chaîne dans les structures pour indiquer la taille de la chaîne lors de l'écriture sur le disque.
Notes
Les champs de chaîne dont le nombre d'octets est supérieur au nombre spécifié par l'attribut VBFixedString sont tronqués lors de l'écriture sur le disque,
Mode binaire
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. La fonction FilePut écrit toutes les variables sur le disque de manière contiguë, c'est-à-dire sans remplissage entre les enregistrements.
Pour tout tableau autre que ceux d'une structure, la fonction FilePut n'écrit que les données. Elle n'écrit aucun descripteur.
FilePut écrit les chaînes de longueur variable qui ne sont pas des éléments de structure, sans le descripteur de deux octets. Le nombre d'octets écrits est égal au nombre de caractères de la chaîne. Par exemple, les instructions suivantes écrivent 11 octets dans le fichier numéro 1 :
Dim hellow As String = "Hello World" FilePut(1,hellow)
L'écriture sur fichier à l'aide de la fonction FilePut requiert l'accès Write à partir de l'énumération FileIOPermissionAccess.
Exemple
Cet exemple utilise la fonction FilePut pour écrire des données dans un fichier. Cinq enregistrements de la structure Person
sont écrits dans le fichier.
Structure Person
Public ID As Integer
Public Name As String
End Structure
Sub WriteData()
Dim PatientRecord As Person
Dim recordNumber As Integer
' Open file for random access.
FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
' Loop 5 times.
For recordNumber = 1 To 5
' Define ID.
PatientRecord.ID = recordNumber
' Create a string.
PatientRecord.Name = "Name " & recordNumber
' Write record to file.
FilePut(1, PatientRecord)
Next recordNumber
FileClose(1)
End Sub
Plates-formes
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
.NET Framework
Prise en charge dans : 2.0, 1.1, 1.0
Voir aussi
Référence
FileSystem, classe
Membres FileSystem
Microsoft.VisualBasic, espace de noms
ArgumentException
IOException
Autres ressources
FilePut, fonction
FileGet, fonction
FileOpen, fonction
Seek, fonction
FileGetObject, fonction
VBFixedStringAttribute, classe
Len, fonction (Visual Basic)
Écriture dans des fichiers en Visual Basic