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

Collection et Stream Java Discussion :

copier d'un fichier dans un tableau


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut copier d'un fichier dans un tableau
    salut,
    j'ai un fichier de caractère. je veux pointer dans une positions définie et convertir les 4080 caractères situés après cette position en décimal et les copier (position+4080)dans une matrice d'entier (16,255).
    j'ai essayer de le faire mais j'arrive pas!!!!!!!!!!!!!!!!!!!!!!!!!!

    petiiiiiiiiiiiiiiiiiiiiite partie de mon fichier:
    òe<¯y®*‡WÄ…ŠTÁiä8¤mˆ}›Ôgß
    µ%^¨gß{§›ñ?Žªú™ÅôCÐJèÙÓ *Xù;lÀ+ÙGÅæj€?÷ß'³=ôdŒˆ€€ÖÚv¼Ð`Ø€PJ?#;„R_ •Ðt: GZŸ\3Böòõ1ôºân¥³ΧN
    wúQ

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Quel est le code que tu as fait ? Qu'est-ce qui te bloque ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    le premier entier de la matrice n'avait la position 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
    do {           
     
     
     
    				 if (a==compteur)	//a est la position
    		      		{
    		      		 for (e = 0 ; e < 16 ; e++)
    			           {
    				         for (h = 0 ; h < 255 ; h++) 
    				           {
    					          l=fl.read();
    				                  hex = Integer.toHexString(l);
    				                  M[e][h]=Integer.parseInt(hex,16);
    					          System.out.print(M[e][h]+" ");
    					          compteur ++;
    					          //System.out.println(compteur);
    				           }
    				   }
     
    		      		  }	
    				else 
    				{
    					 l=fl.read();
     
    				  compteur ++;
    				}
    				} while (((l=fl.read())>-1)||(compteur==a+4080));

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Comment est déclaré et ouver fl? Comment est initialisé compteur? Tu entends quoi par "le premier entier de la matrice n'avait la position a"? Il y avait quoi à la place à la première entrée de ton tableau?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    				                  hex = Integer.toHexString(l);
    				                  M[e][h]=Integer.parseInt(hex,16);
    ce bout de code n'a pas de sens, si n'est de faire perdre du temps CPU. Tu convertis ton entier en string pour récupérer l'entier de départ en parsant la String. Met directement l dans ton tableau:
    Et c'est quoi ton fichier? Tu dis un fichier de caractères, mais ça m'a plutôt l'air d'un fichier binaire.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il y a la condition là aussi qui ne va pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (((l=fl.read())>-1)||(compteur==a+4080));
    Déjà, fl.read() ça lit le flux. Donc tu lis le flux plusieurs fois à chaque tour de boucle. En plus, il faut tester ça avant d'entrer dans la boucle (tu es peut-être s$ur que ton fichier n'est jamais vide, mais tout de même).
    Ensuite compteur==a+4080 est vrai au plus une seule fois (compteur est incrémenté au moins de 1 à chaque tour de boucle) : cette condition a peu de chance d'être utile. Et si par chance elle était vrai au moment où il n'y plus d'octet dans le fichier, patatras...
    C'est plutôt un while, un et (&&) et un < : on lit tant qu'il y a quelque chose à lire et tant qu'on a pas lu tout ce qu'on voulais lire (donc tant que le compteur est inférieur au nombre à lire)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Candidat au Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    FileInputStream fl=new FileInputStream (fichier);

    int compteur=0;

    hex = Integer.toHexString(l);
    M[e][h]=Integer.parseInt(hex,16);
    pour convertir en décimal

    mon fichier est(partie):
    òe<¯y®*‡WÄ…ŠTÁiä8¤mˆ}›Ôgß
    µ%^¨gß{§›ñ?Žªú™ÅôCÐJèÙÓ *Xù;lÀ+ÙGÅæj€?÷ß'³=ôdŒˆ€€ÖÚv¼Ð`Ø€PJ?#;„R_ •Ðt: GZŸ\3Böòõ1ôºân¥³ΧN
    wúQ

    et voila comment j'ai fait la lecture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    			File fichier=new File ("fichier");
    			FileInputStream flux=new FileInputStream (fichier);
     
    			int l;
     
     
    			while ((l=flux.read())>-1)
    			{
     
    	                	System.out.write(c);
    }
     
    			flux.close();
    après il faut le convertir en héxa et compter tous les blocs de taille 4080 et situés dans deux B8 c.a.d (B8+......+B8=4080) c'est bon j'ai fait tous ça et j'ai placer la première position de B8 de chaque bloc dans un tableau.
    maintenant je doit extraire chaque bloc et le convertir en décimal et le copier dans une matrice pour le traiter après. a est le contenu de la première case de tableau des position est égale à 136 mais il pointe dans la position 272

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui, m'enfin, ce serait plutôt System.out.write(l); ou System.out.print(l);.
    Et ce serait mieux d'utiliser un try-with-resource :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    File fichier=new File ("fichier");
    try(FileInputStream flux=new FileInputStream (fichier) {
     
       int l;
       while ((l=flux.read())>-1) {
              System.out.write(l);
       }
    }
    Ensuite, tu dois récupérer les octets entre une borne a, et une borne b = a+4080, si je comprends bien. Donc, il te faut un compteur pour compter les octets lu : ta variable compteur. Et ne rien traiter tant que tu n'a pas atteint a, puis arrêter dès que tu as atteint a+4080.
    La condition d'arrêt s'applique dans la condition du while donc. Et la condition de traitement dans la boucle du while :

    Code pseudo java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       while ((l=flux.read())>-1 && "qu'on a pas tout traiter ce qu'on veut traiter") {
              //System.out.write(l);
              si on a atteint la partie qu'on veut traiter
                      on traite
              fin si
       }

    La conversion dont tu parles, comme a dit @Tchize_, n'a pas lieu : tu lis des int, tu stockes des int. Ou alors les données sont codées dans le fichier, d'une certaine manière (par exemple, une série de 4 octets, correspond à un int de ta matrice...) : il faut nous préciser ça, nous dire comment les donnés sont codées dans ton fichier.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Candidat au Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    merci à vous j'ai résolu le problème

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

Discussions similaires

  1. charger un fichier dans un tableau
    Par nico0007 dans le forum Delphi
    Réponses: 3
    Dernier message: 16/01/2007, 23h59
  2. Réponses: 4
    Dernier message: 26/01/2006, 14h37
  3. Réponses: 14
    Dernier message: 19/11/2005, 18h56
  4. Mettre un fichier dans un tableau
    Par peuf23 dans le forum Langage
    Réponses: 3
    Dernier message: 26/07/2005, 10h47
  5. Réponses: 4
    Dernier message: 10/10/2003, 18h04

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