Lire 2 fichiers en java

poupouille55 Messages postés 35 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 avril 2008 - 9 juil. 2007 à 10:55
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 9 juil. 2007 à 13:50
Bonjour
je dois lire un fichier txt dans lequel il y a plusieurs nom de fichier txt.
J'arrive à lire ce premier fichier. Mais lorsque je dois lire les fichiers (les uns après les autres) qui sont dans ce premier fichier pour enregistrer les données dans une base, il ne lit rien. est-ce normal? peut-on utiliser 2 buffereader et 2 fileReader??
merci pour votre aide
A++

4 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
9 juil. 2007 à 11:21
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title>
</title>
<meta name="GENERATOR" content="OpenOffice.org 2.2 (Linux)" />
<meta name="CREATED" content="20070709;11190100" />
<meta name="CHANGED" content="16010101;0" />
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
Salut,

il serait plus judicieux
de nous montrer ce que tu fais histoire de pouvoir adapter l'aide à
l'existant...











------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
9 juil. 2007 à 11:24
biensurs que tu peux ouvrir plusieurs stream ou fichier en meme temps ;o) ... cependant il doit exister une limite ;o) (je ne la connais pas, on a rarement besoin de plus de 2 en meme temps ;o) )  ton probleme doit se situer ailleur soit plus precis (exemple de code) surment un souci de referencement ;o) ...

GodConan ;o)
0
poupouille55 Messages postés 35 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 avril 2008
9 juil. 2007 à 12:00
ok merci
voici le code :

voila la classe dans laquelle je gère mes fichiers. tout d'abord on appelle la fonction LectureFile (a partir du main d'une autre classe que je n'ai pas mise) qui lit le premier fichier. elle fait une boucle sur tous les noms de fichiers qu'elle contient. ensuite pour chaque ligne lue, on vérifie l'extension car les fichiers ne sont pas traités de la même façon s'ils sont en xls ou txt. (pour les xls, aucun problème ça fonctionne car je n'ai pas besoin de lire le fichier). donc pour les fichiers txt, on appel la fonction sauvegardeFichierTxt. et c'est que j'ai un problème. car lorque je veux afficher
  System.out.println("ici"+lire.ready()); rien ne s'affiche.

import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.*;
import java.sql.*;
import java.sql.Date;
import java.util.*;

public class Utilitaires {
    static Connection connexion;
    static Statement statement=null;
    static String filename;
   
    /***************************************************************/
    public static void sauvegardeFichierXls(String filename){
        String site, heure, type, date, protocole, sujet;
        File file = new File(filename);
        filename=file.getName();
        StringTokenizer st=new StringTokenizer(filename,"_.",false);
        site=st.nextToken();
        sujet=st.nextToken();       
        protocole=st.nextToken();   
        date=st.nextToken();
        heure=st.nextToken();
        type=st.nextToken();

        site=site.substring(0,5);
        sujet=sujet.substring(5,10);
        //System.out.println("site :"+site+" /sujet:"+sujet+" /protocole:"+protocole+" /date:"+date+" /heure:"+heure+" /type:"+type);
        int year=Integer.parseInt("20"+date.substring(0,2));
        int month=Integer.parseInt(date.substring(2,4));
        int day=Integer.parseInt(date.substring(4,6));
        int hour=Integer.parseInt(heure.substring(0,2));
        int minute=Integer.parseInt(heure.substring(2,4));
        int second=Integer.parseInt(heure.substring(4,6));
        java.sql.Date d=new Date(year-1900,month-1,day);
        java.sql.Time t=new Time(hour,minute,second);
        String requeteSQL="INSERT INTO fichier (nom, site, sujet, protocole, type, date, heure) VALUES('"+filename+"','"+site+"','"+sujet+"','"+protocole+"','"+type+"','"+d+"','"+t+"')";
        Insert(requeteSQL);
    }
    /***************************************************************/
    public static void sauvegardeFichierTxt(String filename, String c){
        String age, sexe, taille;
        //JDBCgestion("jdbc:mysql://127.0.0.1/predica", "root", "");
            try{
                System.out.println("là");
                FileReader lire=new FileReader(filename);
                System.out.println("ici"+lire.ready());
                BufferedReader buffer=new BufferedReader(lire);
                age= buffer.readLine();
                sexe=buffer.readLine();           
                taille=buffer.readLine();
                System.out.println(age+"/"+sexe+"/"+taille);
                String requeteSQL="INSERT INTO sujet (code, age, sexe) VALUES('"+c+"','"+age+"','"+sexe+"')";
                System.out.println(requeteSQL);
                Insert(requeteSQL);
            }catch(IOException ioe){ ioe.getMessage();}   
    }
    /***************************************************************/
    public static void JDBCgestion(String url, String user, String password){
        try{
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch(ClassNotFoundException PBDriver){
            System.out.println(PBDriver.getMessage());
        }
                   
        try{
            connexion=DriverManager.getConnection(url,user,password);
            System.out.println(connexion);
            statement = connexion.createStatement();
            System.out.println(statement);
        }
        catch(Exception ex){
            System.err.println(ex.toString());
        }
    }
    /***************************************************************/
    public static void Insert(String requeteSQL){
        try{
            statement.executeUpdate(requeteSQL);
        }
        catch(SQLException ex){
            System.err.println("SQLException : "+ex.getMessage());
        }
    }   
    /***************************************************************/
    public static void ExtensionFile(String filename){
        String extension,c;
        File file2 = new File(filename);
        StringTokenizer st=new StringTokenizer(file2.getName(),".",false);
        c=st.nextToken();
        extension=st.nextToken();
        System.out.println("fichier traité:"+filename);
        if((extension.equals("txt"))==true){
            Utilitaires.sauvegardeFichierTxt(filename, c);
            //System.out.println("fichier txt");
        }
        else if((extension.equals("xls"))==true){
            //Utilitaires.sauvegardeFichierXls(filename);
            System.out.println("fichier xls");
        }
    }//
    /***************************************************************/
    public static void LectureFile(String filesource){
        String ligne;
        try{
            JDBCgestion("jdbc:mysql://127.0.0.1/predica", "root", "");
            FileReader lecteur= new FileReader(filesource);
            System.out.println(lecteur.ready());
            BufferedReader buffer = new BufferedReader(lecteur);
            System.out.println(buffer.ready());
            while((ligne=buffer.readLine())!=null){
                Utilitaires.ExtensionFile(ligne);
                //System.out.println(ligne);
            }
        }catch(IOException e){
            e.getMessage();
        }
    }
}
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
9 juil. 2007 à 13:50
tu n aurai pas par hazard une exception ?!!! du genre no file found !!!

ceci dit c est une vrai toture que de lire ce genre de code, il y a tellement de faute !! ;-(
à commencer par la plus grave ;o) le non respect des conventions de nommage ...
ensuite si tu continus sur cette voie .... oulala ;o)
l emploi des methode static n est en rien justifier de meme qu une bonne moitier des methodes... ;o) pense aussi qu il est bon de prendre pour habitude de fermer tout les flux ouvert... cette discipline permet souvent une meilleur organosation des methode et class ... meme si la JVM evite la plus part des prob ;o) elle ne les evite pas tous ....

pour conclure difficile de detecter le probleme ...

GodConan ;o)
0
Rejoignez-nous