Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

lecture/écriture de tableau en bloc dans un fichier

1 réponse
Avatar
Eric
bonjour,

voilà mon problème :
sous VB6, il m'était possible de lire (ou écrire) un ensemble de
variable "en bloc" dans un fichier :

pour la lecture çà donnait en gros quelque chose comme :

Dim buffer_double(1000) As Double (je souhaite récupérer 1000 double)
Open "....." For Binary As #1
Get #1, 1, buffer_double (je démare au premier octet du fichier)
Close #1

on pouvait faire la même chose pour écrire dans un fichier.

mais alors pour C#, j'ai bien à priori BinaryWriter qui permet de faire
une copie en bloc Write(Byte[]) mais il n'y a pas de Write(double[])
Write(int[]) etc ...
j'ai remarqué aussi la classe steamwriter mais je vois pas trop comment

en fait çà m'ennuie de faire de la copie variable par variable, je
souhaite vraiment faire une copie en bloc du fichier vers la mémoire ou
de la mémoire vers le fichier

comment puis-je faire ?


Merci pour votre aide

1 réponse

Avatar
Gilles TOURREAU - MVP C#
Bonjour,

Il suffit tout simplement de faire une boucle réalisant n x WriteDouble().
(Créez vous une méthode utilitaire si nécessaire).
Au niveau performance, vous n'avez pas à vous en soucier car .NET gère
derrière un buffer (d'ailleurs la taille peut être personnalisable lorsque
vous récupérez certains Stream).

Cordialement

--
Gilles TOURREAU - MVP C#
E-Mail :
Site Web : http://gilles.tourreau.fr

Société P.O.S - Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr

"Eric" a écrit dans le message de groupe de discussion :
4a7719f1$0$23447$
bonjour,

voilà mon problème :
sous VB6, il m'était possible de lire (ou écrire) un ensemble de variable
"en bloc" dans un fichier :

pour la lecture çà donnait en gros quelque chose comme :

Dim buffer_double(1000) As Double (je souhaite récupérer 1000 double)
Open "....." For Binary As #1
Get #1, 1, buffer_double (je démare au premier octet du fichier)
Close #1

on pouvait faire la même chose pour écrire dans un fichier.

mais alors pour C#, j'ai bien à priori BinaryWriter qui permet de faire
une copie en bloc Write(Byte[]) mais il n'y a pas de Write(double[])
Write(int[]) etc ...
j'ai remarqué aussi la classe steamwriter mais je vois pas trop comment

en fait çà m'ennuie de faire de la copie variable par variable, je
souhaite vraiment faire une copie en bloc du fichier vers la mémoire ou de
la mémoire vers le fichier

comment puis-je faire ?


Merci pour votre aide