IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Lecture / Ecriture de fichier Binaire


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Par défaut Lecture / Ecriture de fichier Binaire
    Bonsoir à tous,

    Bon, j'ai déjà regardé sur le net ainsi que quelques tutos et la doc MSDN mais je n'arrive pas à comprendre/faire (je débute) une lecture de fichier pour le ré-écrire quelque part.

    Sur un livre que j'ai pu lire, l'auteur dis à un moment qu'il faut connaitre le format du fichier d'entrée, j'en ai aucune idée. Tout ce dont j'ai besoin c'est d'un buffer pouvant contenir un fichier de 112 octets (prévoir plus au cas ou) et de l'utiliser pour créer un autre fichier.

    Quelqu'un pourrait-il m'indiquer un tuto clair ou m'aider, me donner quelques lignes, enfin quelque chose ?

    Voici mon bout de code, faux (en partie) et pas fini mais bon pour vous montrez que j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    private void btn_export_Click(object sender, EventArgs e)
    		{
     
    			try {
    				testOriginalFile = new FileInfo(textBoxFile.Text);
    				originalFile = new FileStream(textBoxFile.Text, FileMode.Open, FileAccess.Read);
     
    				testDestinationFolder = new FileInfo(textBoxFolder.Text); //Doc sur les dossiers a voir.
    				fileBinaryReader = new BinaryReader(originalFile);
    			}
    			catch(Exception excp) {
    				DialogResult errorMessage = MessageBox.Show((String)excp.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    			}
     
    			Byte buffer = new byte();
    			Encoding enc = ASCIIEncoding.Default;
    			bool test = true;
     
    			try {
    				if(testOriginalFile.Exists && testDestinationFolder.Exists) {
    					DialogResult errorMessageTEST = MessageBox.Show("Je suis dans le if", "TEST", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    					while(test) {
    						buffer = fileBinaryReader.ReadByte();
    						test = false;
    					}
    					DialogResult errorMessage = MessageBox.Show(buffer.ToString(), "TEST", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    				}
    			}
    			catch {
    				if(fileBinaryReader != null) {
    					fileBinaryReader.Close();
    					originalFile.Close();
    				}
    			}
     
    		}

  2. #2
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    voila un exemple pour copier un fichier d'une façon binaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public void CopierFichier(string IN,string OUT )
            {
                using (System.IO.FileStream writer = new System.IO.FileStream(OUT, global::System.IO.FileMode.Create))
                {
                    using (System.IO.FileStream reader = new System.IO.FileStream(IN, global::System.IO.FileMode.Open))
                    {
                        byte[] b = new byte[1024];
                        while (reader.Read(b, 0, b.Length) > 0)
                        {
                            writer.Write(b, 0, b.Length);
                        }
                    }
                }
     
            }
    tu peux tout faire avec Filestream, StreamWriter et StreamReader

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Par défaut
    La solution que te propose azstar te permet de copier un fichier bien que File.Copy(..) fasse aussi bine le boulot
    Dans le livre dont tu parles quand l'autre dit qu'il faut connaitre le format de ton fichier binaire c'est pour pouvoir le traiter :
    octet 1 = nombre de capteurs
    octet 2 = etc...
    Voila; dans tous les cas il convient d'utiliser un BinaryReader (pour lire) et un BinaryWriter (pour écrire) pour manipuler des données binaires.

  4. #4
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Par défaut
    Citation Envoyé par lead8209 Voir le message
    La solution que te propose azstar te permet de copier un fichier bien que File.Copy(..) fasse aussi bine le boulot
    Dans le livre dont tu parles quand l'autre dit qu'il faut connaitre le format de ton fichier binaire c'est pour pouvoir le traiter :
    octet 1 = nombre de capteurs
    octet 2 = etc...
    Voila; dans tous les cas il convient d'utiliser un BinaryReader (pour lire) et un BinaryWriter (pour écrire) pour manipuler des données binaires.
    Merci pour ces précisions. Est-ce que tu pourrais me donner plus de détails sur les BinaryR et W ? Parce que en essayant la solution de azstar j'ai un message d'erreur qui me dis que je n'ai pas les droits. J'ai essayé plusieurs emplacements sur mon HDD mais ça ne bouge pas.

    Je vais voir avec copy, si je peux me passer d'un binary, pk pas...

  5. #5
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    tu travails sur win7 ?

  6. #6
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Par défaut
    Sous Win8.

    Bon, j'ai essayé avec File.Copy et ça fonctionne plutôt bien. Donc du coup je ne sais pas qu'elle solution choisir. Quel est le mieux d'après vous ?

    Sinon, je cherche un dernier détail pour finir ça, comment dois-je procéder pour ne pas créer un fichier déjà existant ? Sur la doc il y'a un 3° argument qui parle de substitution. Je ne comprends pas.

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lecture d'un fichier binaire
    Par Tonta dans le forum C++
    Réponses: 1
    Dernier message: 14/04/2006, 06h53
  2. Réponses: 4
    Dernier message: 03/02/2006, 13h50
  3. lecture-ecriture de fichier en mode Random (Get - Put)
    Par MuShRo_Om dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 15/01/2006, 14h53
  4. lecture d'un fichier binaire en VB
    Par olivier] dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 28/12/2005, 11h17
  5. Lecture d'un fichier binaire
    Par Gloubie dans le forum Langage
    Réponses: 9
    Dernier message: 05/12/2005, 12h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo