Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1700 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] mystere de conversion string - byte[ ]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] mystere de conversion string - byte[ ]

n°1972782
thotoss
Posté le 10-03-2010 à 19:31:58  profilanswer
 

Bonjour,
Je me trouve face a un probleme de conversion : je souhaite transferer des fichiers d'une machine a une autre, et pour cela je dois couper mon fichier en plusieurs morceaux : bref il me faut recuperer des tableaux de byte (correspondant a des parties du fichier), a les convertir en string pour les envoyer, puis les reconvertir dans l'autre sens pour les recuperer. Et voici un test que j'ai fais et que je trouve vraiment bizarre  :
 
byte[][] tab;
...
System.out.println("Send : \n" + tab[cpt] + "\n" + new String(tab[cpt]).getBytes());
...
 et voici ce que m'affiche le system :
Send :  
[B@1fb8ee3
[B@61de33
 
 
 
N'est ce pas etrange ? ne devrais-je pas avoirla meme chose dans les 2 cas ?
Cela me pose un pb vu que les bytes ne semblent etre les meme si je converti 2 fois ou si je ne convertie pas.
Quelqu'un peut meclairer sur ce mystere ?
merci d'avance
cordialement,

mood
Publicité
Posté le 10-03-2010 à 19:31:58  profilanswer
 

n°1972905
Bidem
Posté le 11-03-2010 à 11:02:30  profilanswer
 

C'est normal que tu ais des affichage différent. Ce qui est affichier n'est pas le contenu de tes tableaux mais leur adresse mémoire.

 

Si tu veux afficher le contenu il faut utiliser Arrays.toString(byte[])

 
Code :
  1. byte[][] tab;
  2. ...
  3. System.out.println("Send : \n" + Arrays.toString(tab[cpt]) + "\n" + Arrays.toString(new String(tab[cpt]).getBytes()));
  4. ...
 

Sinon, je te conseille d'utiliser le constructeur new String(byte[] bytes, String charsetName)
Sinon, si le charset par défaut est différent sur tes 2 machines tu risque d'avoir des résultats différents.

 

EDIT : au fait, pourquoi tu as besoin de passer par des String ? Quel mécanisme utilise-tu pour le transfert ?


Message édité par Bidem le 11-03-2010 à 11:06:10
n°1973068
thotoss
Posté le 11-03-2010 à 18:18:54  profilanswer
 

Bonjour et merci de me repondre !
J'utilise UDP et envoi de datagramPacket pour transferer mes fichiers. On est d'accord que vu que les paquets contiennent des tableaux de bytes, il n'y a aucun interet a traduire mon fichier en string, puis de nouveau en byte. Seulement je veu ajouter au début de mon paquet un "en tete" specifique pour indiquer a quoi correspond mon pauet, par exemple de la forme "req_data nameFile length data" avec nameFile le nom de mon fichier, length sa longeur, et data ben justement le tableau de byte correspondant au fichier ^^
Existe-t-il un moyen plus simple ?
Merci !
 
EDIT : au fait je pose cette question car mon transfert de fichier marche parfaitement avec des fichiers txt, mais pas avec des autres types (image, video, son ...). Quelqu'un a une idée de comment cela se fait ? SI ça marche pr un fichier, pourquoi ça ne marcherai pas pr un autre type ?
 
bien cordialement,

n°1973165
Bidem
Posté le 12-03-2010 à 02:03:00  profilanswer
 

Je pense que le plus simple reste encore de définir une taille fixe pour ton entête (prévoir suffisamment de place pour toutes les infos que tu veux mettre). ensuite tu mets ton fichier binaire.
 
L'autre solution est de définir un séparateur contenant une suite de caractères qui ne peuvent pas apparaitre dans ton entête et à la réception il te suffit de chercher ce séparateur : tout ce qui se trouve avant, c'est l'entête et tout ce qu'il y a près c'est ton fichier.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] mystere de conversion string - byte[ ]

 

Sujets relatifs
snmp en javaLancer JAVA avec le JRE d'installé
[java][PrintWriter] Pbm d'arrêt non commandéScript java zoom d'images
[Débutant] Erreur : java.lang.NullPointerExceptionSignature MS Outlook conversion RTF
Interface javaprobleme java interface graphique
Aide Tableau Java 
Plus de sujets relatifs à : [JAVA] mystere de conversion string - byte[ ]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR