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

  FORUM HardWare.fr
  Programmation
  Java

  Extraire le contenu binaire d'un fichier vers une chaine de caracteres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Extraire le contenu binaire d'un fichier vers une chaine de caracteres

n°637910
xavier-
Futur président
Posté le 10-02-2004 à 18:37:50  profilanswer
 

Dans le cadre d'un projet, je travaille sur une class permettant d'encoder un ficher à l'aide du protocol base64
 
La classe que j'ai faite fonctionne, mais pose de gros problème de temps.
 
Pour pouvoir encoder à l'aide de cet algorithme, je dois extraire les bits d'un fichier et si possible les copier vers une chaine de caractere. La méthode que j'utilise consiste à :
 
/*
Créer une instance de la class URL avec en argumant le chemin vers mon fichier :
*/
 
URL url = new URL("file:///E:/Documents%20and%20Settings/Xavier/Bureau/hexview.zip" );
 
/*
Ensuite, j'utilise la méthode openStream de la classe URL qui permet d'obtenir une instance InputStream pointant vers mon fichier
*/
 
InputStream is = url.openStream();
 
/*
Ensuite, j'utilise la méthode read de la classe InputStream qui me permet de copier l'ensemble des octets du fichier dans un buffer :
*/
 
byte b[] = new byte[is.available()];
 
/*
Le type byte étant forcément signé, je copie le contenu de mon tableau dans un autre tableau de type int, et fais une opération dans le but d'avoir la valeur de mes octets non signés
*/
 
int unsignedB[] = new int [b.length];
String s;
String total = "";
 
/*
Je converti chaque octet signé en octet non signé (en utilisant le type int), puis je copie la valeur correspondante convertie en binaire dans ma chaine de caractere
*/
 
for (int i = 0; i < b.length; i++) {
  unsignedB[i] = b[i] & 0xFF;
  total = total + Integer.toBinaryString(unsignedB[i]);
}
 
Voila, ma chaine de caractere total contient le contenu de mon fichier en binaire. Seulement voila, cette méthode est extremement lente et est quasiment inutilisable lorsque les fichiers font plus de 10 ko.
 
Avez vous donc, une idée sur une méthode alternative ?
 
 
Merci pour toute aide :)

mood
Publicité
Posté le 10-02-2004 à 18:37:50  profilanswer
 

n°637912
EpoK
Let's burn
Posté le 10-02-2004 à 18:41:43  profilanswer
 

met ton code entre [ cpp ] [ /cpp ]

n°637919
benou
Posté le 10-02-2004 à 18:48:22  profilanswer
 

le gros problême de ton code est cette ligne là :  
  total = total + Integer.toBinaryString(unsignedB[i]);  
 
utilise un StringBuffer pour concaténer, tu vas voir que les perfs vont "sensiblement" augmenter ;)
 
sinon, la bonne solution et de lire le flux par bloc et de passer ces blocs à un encoder Base64 (ex : http://jakarta.apache.org/commons/ [...] se64.html) et de copier le bloc encodé dans un buffer (StringBuffer ou flux de sortie en fonction du besoin)


---------------
ma vie, mon oeuvre - HomePlayer

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

  Extraire le contenu binaire d'un fichier vers une chaine de caracteres

 

Sujets relatifs
Récupérer, en partie, des données provenant d'un fichier texte[PYTHON] Comment faire pour supprimer un fichier ?
[XMI] Comment récupérer un fichier [URGENT ]extraitre une sous chaine esct ce possible ?
peut - on creer une variable dans le fichier bash ?problème conversion Chaine->hexa
Appel vers un fichier JS externe qui ne marche pas.[VB Excel] Comment définir une variable avec le contenu d'une autre ?
Corriger un fichier html 
Plus de sujets relatifs à : Extraire le contenu binaire d'un fichier vers une chaine de caracteres


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