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

Entrée/Sortie Java Discussion :

générer un fichier binaire OCTET par OCTET


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 54
    Points
    54
    Par défaut générer un fichier binaire OCTET par OCTET
    Bonjour tout le monde,

    mon problème consiste principalement à ecrire un code JAVA qui me permettrait de générer un fichier binaire (et le sauvegarder pour une utilisation ultérieure) à partir d un fichier xml...

    Je me demandais comment devrais-je débuter..?

    merci de votre aide..

    (je suis débutant en JAVA)

  2. #2
    Membre habitué
    Profil pro
    Devops
    Inscrit en
    Août 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Devops

    Informations forums :
    Inscription : Août 2006
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Tu devrais regarder du côté du ByteArrayOutputStream. En ajoutant tes octets les uns après les autres, comme tu le sens et en récupérant l'ensemble du tableau d'octet avec la fonction toByteArray().

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 54
    Points
    54
    Par défaut
    merci pour ta réponse,

    si je déclare un tableau de byte, je le remplis comme je l entends je pourrai apres récupérer tout le fichier?

    autre question si j'ai envie de le remplir en format hexadecimal que dois-je faire?

    encore merci

  4. #4
    Membre habitué
    Profil pro
    Devops
    Inscrit en
    Août 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Devops

    Informations forums :
    Inscription : Août 2006
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    En fait, si tu connais déjà la taille des données que tu veux produire, effectivement tu peux utiliser un tableau de byte. Sinon, Java propose tout un ensemble de classe permettant la manipulation de flux utilisant un tampon ou non permettant de produire, entre autre, un tableau a la fin du travail.

    Pour écrire des valeurs en hexa decimal, tu peux faire de la façon suivante :
    si je déclare un tableau de byte, je le remplis comme je l entends je pourrai apres récupérer tout le fichier?
    Euh... Je ne comprends pas vraiment ce que tu essayes de dire parce qu'ici, le tableau est en mémoire et un fichier est un ensemble d'octet sur un disque. Après avoir fait ton tableau en mémoire tu peux l'ecrire sur le disque en utilisant les fameux flux (stream en anglais).

    Note : Attention le byte en Java est signé : les valeurs possibles sont dans l'interval [-127, 128].

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 54
    Points
    54
    Par défaut
    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
    import java.io.*;
    
    public class TestByteArrayOutputStream {
    	public static void main(String[] args){
    		ByteArrayOutputStream bos=new ByteArrayOutputStream();
    		int byteLu;
    		byte[] tab=new byte[17];
    		//ecriture dans le tampon
    		for(byte i=0;i<10;i++) {
    			bos.write(i);
    		}
    		//récuperation des données contenues dans le tampon
    		tab=bos.toByteArray();
    		//affichage des données
    		for(int j=0;j<10;j++) {
    			System.out.println(tab[j]);
    		}
    	}
    }
    le tableau est un tableau de 17 octets...

    moi c que je voudrai faire c'est entrer des valeurs OCTET par OCTET..

    c à dire que je les insère moi même...

    et ca j y arrive pas..j suis vraiment débutant en java..
    est-ce que ce code peut m'aider à faire ca et ou est-ce que je devrais modifier le code pour que j'arrive à inserer mes entrées ?

    merci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 54
    Points
    54
    Par défaut
    merci pr ta réponse j viens juste de la lire..en fait j ai posté mon dernier post avant d 'avoir eu l'occasion de la lire...

    pour te répondre c'est que je dois :

    entrer manuellement les donnees octet par octet dans un tableau de byte puis ce recuperer ce tableau sous forme de suite binaire...(par exemple un TEST.dat) est-ce faisable?

  7. #7
    Membre habitué
    Profil pro
    Devops
    Inscrit en
    Août 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Devops

    Informations forums :
    Inscription : Août 2006
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Je suis peux-etre pas réveillé mais quand tu dis ça :
    Citation Envoyé par SeptembreNoir84 Voir le message
    entrer manuellement les donnees octet par octet dans un tableau de byte puis ce recuperer ce tableau sous forme de suite binaire...(par exemple un TEST.dat) est-ce faisable?
    Est-ce que par manuellement, tu entends que le programme dois demander à l'utilisateur de rentrer les valeurs ? (Parce que sinon, le code d'exemple précédant est exactement ce que tu veux non ?)
    A partir de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //ecriture dans le tampon
    		for(byte i=0;i<10;i++) {
    			bos.write(i);
    		}
    Tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //ecriture dans le tampon
    		bos.write((byte)0x01);
    		bos.write((byte)0x02);
    		bos.write((byte)0x03);
    		etc...
    Et pour lire ou ecrire des valeurs binaires dans un fichier tu peux utiliser les Stream dont je parlais.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Iyoiyo Voir le message
    Je suis peux-etre pas réveillé mais quand tu dis ça :

    Est-ce que par manuellement, tu entends que le programme dois demander à l'utilisateur de rentrer les valeurs ? (Parce que sinon, le code d'exemple précédant est exactement ce que tu veux non ?)
    A partir de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //ecriture dans le tampon
    		for(byte i=0;i<10;i++) {
    			bos.write(i);
    		}
    Tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //ecriture dans le tampon
    		bos.write((byte)0x01);
    		bos.write((byte)0x02);
    		bos.write((byte)0x03);
    		etc...
    Et pour lire ou ecrire des valeurs binaires dans un fichier tu peux utiliser les Stream dont je parlais.


    merci pt tes précisions..chui NUL en java... c pr ca!! en fait j dois faire cette mini application en JAVA (c pas mon choix ) juste pr récupérer le fichier binaire.. l'essentiel de mon projet se fait en C alors...

    donc après j'ai qu'à utiliser les methodes de streamnig de ce fichier vers un autre pour le recupérer en .dat??

  9. #9
    Membre habitué
    Profil pro
    Devops
    Inscrit en
    Août 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Devops

    Informations forums :
    Inscription : Août 2006
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par SeptembreNoir84 Voir le message
    donc après j'ai qu'à utiliser les methodes de streamnig de ce fichier vers un autre pour le recupérer en .dat??
    [/I]de ce fichier[/I] (Mais de quel fichier tu parles ??) vers un autres (La, j'imagine que tu parles du fichier final dans lequel tu dois avoir les octets)

    Ce que je te propose c'est ça :

    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
    		ByteArrayOutputStream bos = new ByteArrayOutputStream();
     
    		// Ecriture dans le tampon
    		bos.write(0x01);
    		bos.write(0x02);
    		bos.write(0x03);
     
    		// On cree un flux binaire de sortie
    		FileOutputStream fos = null;
    		try
    		{
    			fos = new FileOutputStream("fichier.dat");
    			fos.write(bos.toByteArray());
    		}
    		catch (Exception e)
    		{
    			e.printStackTrace();
    		}
    		finally
    		{
    			// On ferme toujours le flux pour libèrer les ressources
    			try
    			{
    				fos.close();
    			}
    			catch (Exception e)
    			{
    			}
    		}
    Autre chose : .dat ne veux rien dire...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 54
    Points
    54
    Par défaut
    merci...en fait par .dat j voulai dire les fichiers binaires : 000111000111111 etc..

    (cette extension j l ai mentionnée paske les fichiers binaires (000110000..etc) que j'ai a disposition dans le cadre de ce travail sont repertoriés comme suit : "septembre.dat")
    et mes excuses si mes posts sont pas très clairs comme je te l'ai dit j suis nul en java..je termine ce mini prog et j m y met serieusement!!)

    et merci pr ton aide !!! j vais essayer avec ca..en principe ca devrait marcher

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 54
    Points
    54
    Par défaut
    merci c'est bon !! après quelques menues modifications ca marche a merveille!!

    UN GIGA I A TOI lyoiyo

  12. #12
    Membre habitué
    Profil pro
    Devops
    Inscrit en
    Août 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Devops

    Informations forums :
    Inscription : Août 2006
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    De rien, clique sur Resolu stp. et bonne continuation !

    [Grilled : Merci pour le résolu !]

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

Discussions similaires

  1. probléme lecture de fichier binaire octer par octet
    Par ousmanesidibe dans le forum C++
    Réponses: 2
    Dernier message: 12/12/2009, 21h34
  2. [Gestion de fichiers] Lecture octet par octet
    Par kendras dans le forum C
    Réponses: 21
    Dernier message: 18/09/2006, 15h08
  3. Calculer le MD5 d'un fichier octet par octet
    Par bouazza92 dans le forum C
    Réponses: 5
    Dernier message: 09/08/2006, 20h39
  4. Lecture d'un fichier octet par octet
    Par Yux dans le forum C
    Réponses: 7
    Dernier message: 31/10/2005, 22h58
  5. Lecture d'un fichier octet par octet
    Par PopKoRn...X_x dans le forum C++
    Réponses: 10
    Dernier message: 01/07/2005, 19h09

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