lecture/écriture de tableau en bloc dans un fichier
1 réponse
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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 : gilles.tourreau@pos.fr
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" <nospam@nospam.com> a écrit dans le message de groupe de discussion :
4a7719f1$0$23447$ba4acef3@news.orange.fr...
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
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