siropipo
Messages postés26Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention21 juin 2005
-
30 mai 2005 à 12:07
cs_ducheseb
Messages postés344Date d'inscriptionmardi 18 mai 2004StatutMembreDernière intervention23 juin 2006
-
2 juin 2005 à 23:46
SAlut a tous,
jai un souci avec mon code , au niveau du fileinputstream, et je comprends pas pourquoi le compilateur me dit "unreported exception java.io.filenotfoundexception...
/** Creates a new instance of Main */
public Main() {
}
/**
* @param args the command line arguments
*/
private void lectureFichier ()
{
Vector VecFichier = new Vector ();
File dossier = new File ("c:/test/");
if (!dossier.isDirectory ())
{
dossier.mkdirs ();
}
File fichier = new File (dossier+"test.txt");
FileInputStream ficin = new FileInputStream(fichier);
byte [] tab = null;
int pos = 0;
ficin.read (tab,pos,4);
String str = new String (tab);
int res = heXToInt(str);
if (result == ficIn.read(tab,pos,result))
{
}
for (; pos < result + 4;)
{
ficIn.read(tab,pos,2);
str = new String (tab);
int res = hexToInt(str);
ficIn.read(tab,pos,res);
}
}
private int heXToInt (String nombreHex)
{
int pos = 0;
int sum = 0;
int multiple = 1;
for (int ind = nombreHex.length () ; ind != 0 ; --ind)
{
for (int i = 0 ; i < pos ; ++i)
{
multiple *= 16;
}
sum += multiple * (nombreHex.charAt(ind) - '0');
}
return sum;
}
}
et apres jai fais une fonction hexa => decimal mais bon je doute que ca soit comme ca...
Si vous pouviez me filler la main.
mici ;)
siropipo
Messages postés26Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention21 juin 2005 30 mai 2005 à 14:03
salut !
merci a toi, je viens de voir mon erreur... javais corriger jusqu'a
catch(IOException ioe){
System.out.println("Erreur de lecture");
}
ca je savais pas comment le faire..
Merci bicoup.
public class Main
{
public static void main (String args[])throws Exception
{
Main m = new Main();
LectureFichier();
}
}
et un xml.java avec la fonction lecture fichier :
import java.util.Vector;
import java.io.*;
import java.lang.String;
import java.io.FileNotFoundException;
public class XML
{
public void LectureFichier ()
{
try
{
Vector VecFichier = new Vector ();
File dossier = new File ("c:/test/");
if (!dossier.isDirectory ())
{
dossier.mkdirs ();
}
File fichier = new File (dossier+"test.txt");
FileInputStream ficin = new FileInputStream(fichier);
byte [] tab = null;
int pos = 0;
ficin.read (tab,pos,4);
System.out.println(tab);
String str = new String (tab);
System.out.println(str);
int res = Integer.parseInt(str, 16);
if(pos==0)
{
}
}
cs_ducheseb
Messages postés344Date d'inscriptionmardi 18 mai 2004StatutMembreDernière intervention23 juin 20069 31 mai 2005 à 19:06
Si tu veux mettre ta fonction de lecture dans la classe XML sans avoir
de constructeur pour cette classe, tu dois mettre ta fonction
lectureFichier static: public void static LectureFicher().
En suite tu l'appel dans ta fonction main avec XML.LectureFichier().
Mais pourquoi fais tu une classe Main et une autre classe XML?
siropipo
Messages postés26Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention21 juin 2005 31 mai 2005 à 19:35
on ma dit de faire deux classes.
Mais si une suffit alors je nen ferai qu'une.
mais je comprends pas en fait.
ma fonction lecture fichier et public static void main (String args[])throws Exception vont dans la classe main ? et celle la public Main() je la met ou ?
dans void main (string... on met juste Main m = new Main(); ??
siropipo
Messages postés26Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention21 juin 2005 31 mai 2005 à 21:41
Re Salut !
bon jai reglé mon pb de main.
Now jai une erreur de run :
Exception :java.lang.NullPointerException
ca correspond a la ligne :
ficin.read (tab,pos,4); <<====
System.out.println(tab);
String str = new String (tab);
System.out.println(str);
serais-ce parceque je n'est pas instancié ma fonction oparavant ? comment faire ?
Merci bien ;)
siropipo
Messages postés26Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention21 juin 2005 1 juin 2005 à 10:01
Mais le pb c ke la taille n'est pas fixe. elle est defini par les quatre premier byte.
je vais essayer de faire deux tableau.
byte[] tab = new byte[4]; le premier ki recupere la taille et lotre ki varie en fonction de cette taille.
siropipo
Messages postés26Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention21 juin 2005 1 juin 2005 à 21:33
Le str renvoie 0023.
res renvoi la valeur 35... ce qui reprensente en fait 35 pair d'octet a recuperer par la suite.
ton avis ?
est ce que ca peux venir de la configuration du logiciel eclipse ?
siropipo
Messages postés26Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention21 juin 2005 2 juin 2005 à 11:54
Je crois que jai trouvé, kan je fait ficIn.read(wibCode,0,res); , ca lit a partir de la ou le cruseur c'est arrété au curseur précedent.
jai modifié mon code jai fait ca :
byte[] tab = new byte[4];
int pos = 0;
ficIn.read(tab, pos, 4); //il me lit les bien les 4 premiers chiffres
String str = new String(tab);
System.out.println(str);
int res = Integer.parseInt(str, 16);
System.out.println(res);
res *= 2;
byte[] wibCode = new byte[res];
ficIn.read(wibCode,0,res); // en mettant 0 ca marche car il repart de l'offset sur lekel il c'est arrété.
str = new String(wibCode);
System.out.println(str);
Comment faire pour faire revenir l'offset a zero ?
siropipo
Messages postés26Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention21 juin 2005 2 juin 2005 à 12:21
Re c encore moi. bon jai reglé le pb regarde :
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.String;
import java.util.Vector;
public class Main {
public static void main(String args[]) throws Exception {
Main m = new Main();
}
public Main() {
LectureFichier();
}
public void LectureFichier() {
try {
Vector VecFichier = new Vector();
File dossier = new File("c:/test/");
if (!dossier.isDirectory()) {
dossier.mkdirs();
}
File fichier = new File(dossier, "test.txt");
FileInputStream ficIn = new FileInputStream(fichier);
//byte [] tab = null;
byte[] tab = new byte[4];
int pos = 0;
ficIn.read(tab, pos, 4);
String str = new String(tab);
System.out.println(str);
int res = Integer.parseInt(str, 16);
System.out.println(res);
res *= 2;
/* byte[] wibCode = new byte[res];
ficIn.read(wibCode,0,res);
str = new String(wibCode);
System.out.println(str);
//ecriture Xml
if (res != ficIn.read(tab,0, res))
{
System.out.println("Crc invalide");
}*/
for (; pos < res;)
{
byte[] id = new byte[2];
ficIn.read(id,0,2);
str = new String(id);
System.out.println(str);
pos += 2;
//lecture fichier xml
//ecriture Xml
byte[] len = new byte[2];
ficIn.read(len,0,2);
str = new String(len);
int longueur = Integer.parseInt(str,16);
longueur *= 2;
System.out.println(longueur);
pos += 2;
byte[] donnee = new byte[longueur];
ficIn.read(donnee,0,longueur);
str = new String(donnee);
System.out.println(str);
pos += longueur;
//lecture fichier xml
//ecriture Xml
}
}
cs_ducheseb
Messages postés344Date d'inscriptionmardi 18 mai 2004StatutMembreDernière intervention23 juin 20069 2 juin 2005 à 23:46
Tu peux soit te faire une fonction à la main (ce que je me suis fait)
soit utiliser des technologie comme DOM pour parser. Je ne l'ai pas
encore implémenté. Si tu veux, je pourrais te donner quelques infos
demain.