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

Langage Java Discussion :

Déplacement de fichier.


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Déplacement de fichier.
    Bonjour à tous,

    je vous sollicite pour un avis, j'ai une fonction dans un de mes codes qui me pose problème, le but et simple, je lie un fichier texte séparé par des ; puis je split tout sa dans des variables pour faire une insertion dans une BDD... tout cela fonctionne sans problème, après le traitement du fichier je veux le déplacer dans un autre répertoire afin de valider le traitement. (Action que j'ai deja codé y a au moins 10 ans ... et qui fonctionne sans problème.)

    Pour info, le code suivant et lancé dans un Thread dans une boucle infini pour vérifier l'arriver d'un nouveau fichier.

    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
    public void readRdvFileToSql() throws FileNotFoundException, IOException, SQLException{
            File here = new File("z:/ORTHO/");      
     
            // fichiers et répertoires du répertoire courant
            for(File content : here.listFiles()) {
                // vérifier que c'est bien un fichier et qu'il termine en .txt
            if(content.isFile() && content.getName().endsWith(".txt")) {            
                File source = new File(here+"/"+content.getName()); 
                String filesource = source.toString();
                //log de la lecture
                writeLogFile(TimeStamp+" : LECTURE : Fichier de RDV : "+filesource+Newligne,"c:/IMROSoinsExt/Logg/FileSQL_auto.log");
                fileToSQL(source); //Methode qui lie et insert fdans la base SQL ////------ et QUI FAIT PLANTER LE DEPLACEMENT DES FICHIERS LU HELP HELP HELP HELP !!!!!! :)        
                System.out.println(filesource);           
                //writeLogFile(TimeStamp+" : SQL ECRITURE : Ecriture du RDV de : "+nom_Pat+" "+prenom_Pat+" "+ipp+Newligne,"c:/IMROSoinsExt/Logg/FileSQL_auto.log");
     
                File destination = new File(here+"/TT_DAEMON_OK/"+"DEV_"+content.getName());            
                //On deplace le fichier lorsque il est traité par la passerelle.
                source.renameTo(destination);            
            }
     
            }      
     
     
        }
    La fonction suivante prend, lie le fichier et écrie dans la BDD.
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     public void fileToSQL(File fic) throws FileNotFoundException, IOException, SQLException{
              // répertoire courant
            File here = new File("z:/ORTHO");         
            String num_RDV; //0
            String crea_Mod_Sup;//1
            String date_RDV;//2
            String heure_RDV;//3
            String type_RDV;//4
            String comm_RDV;//5
            String comm_RDVConcat;
            String nom_Pat = null;//6
            String prenom_Pat = null;//7
            String date_Naiss;//8
            String sexe;//9
            String ipp = null;//10
            String adresse_1;
            String adressConcat;
            String adresse_2;
            String cp;
            String ville;
            String villeConcat;
            String tel_1;
            String tel_2;
            String modalite;
            String code_Examen;
            String libelle_Examen;
            String num_Adeli;
            String nom_Prescripteur; 
            String ligne;        
            BufferedInputStream in = new BufferedInputStream(new FileInputStream(fic));
     
            InputStream ips = new FileInputStream(fic);
            InputStreamReader ipsr= new InputStreamReader(ips);
            BufferedReader br = new BufferedReader(ipsr);
     
                    while((ligne=br.readLine())!=null){
                         String str[] =ligne.split(";");
                         // chaque valeur du tableau str est une valeur de la ligne
                         num_RDV = str[0];
                        System.out.println(num_RDV);
                        crea_Mod_Sup = str[1];            
                        date_RDV= str[2];
                        heure_RDV =str[3];
                        type_RDV = str[4];
                        comm_RDV = str[5];
                        comm_RDVConcat = apostrophe(comm_RDV);
                        nom_Pat = str[6];
                        prenom_Pat = str[7];
                        date_Naiss = str[8];
                        sexe = str[9];
                        ipp = str[10];
                        adresse_1 = str[11];
                        adressConcat = apostrophe(adresse_1);
                        adresse_2 = str[12];
                        cp = str[13];
                        ville = str[14];
                        villeConcat = apostrophe(ville);
                        tel_1 = str[15];
                        tel_2 = str[16];
                        modalite = str[17];
                        code_Examen = str[18];
                        libelle_Examen = str[19];
                        num_Adeli = str[20];
                        nom_Prescripteur = str[21];
                    try {
                        Class.forName("org.postgresql.Driver");
                    } catch (ClassNotFoundException ex) {
                        Logger.getLogger(IMROSoinsExt_GestFile.class.getName()).log(Level.SEVERE, null, ex);
                    }
                System.out.println("DRIVER OK ! ");
                String url = "jdbc:postgresql://10.99.31.103:5432/BDDHL7INTERFACE_DEV";
                String user = "dev_julien";
                String passwd = "********";
                Connection conn = null;
                try {
                    conn = DriverManager.getConnection(url, user,passwd);
                } catch (SQLException ex) {
                    Logger.getLogger(IMROSoinsExt_GestFile.class.getName()).log(Level.SEVERE, null, ex);
                }
                System.out.println("Connection effective !");
                Statement state = null;
                try {
                    state = conn.createStatement();
                } catch (SQLException ex) {
                    Logger.getLogger(IMROSoinsExt_GestFile.class.getName()).log(Level.SEVERE, null, ex);
                }
                state.executeUpdate("INSERT INTO hl7communicator_inputmessage (num_rdv,crea_mod_sup, date_rdv, heure_rdv, type_rdv, comm_rdv,nom_pat,prenom_pat,date_naiss,sexe,ipp,adresse_1,adresse_2,cp,ville,tel_1,tel_2,modalite,code_examen,libelle_examen,num_adeli,nom_prescripteur)"+" VALUES('"+ num_RDV+ "','"+ crea_Mod_Sup+ "','"+ date_RDV+ "', '"+ heure_RDV+ "', '"+ type_RDV+ "', '"+ comm_RDVConcat+ "', '"+ nom_Pat+ "', '"+ prenom_Pat+ "', '"+ date_Naiss+ "', '"+ sexe+ "', '"+ ipp+ "', '"+ adressConcat+ "', '"+ adresse_2+ "', '"+ cp+ "', '"+ villeConcat+ "', '"+ tel_1+ "', '"+ tel_2+ "', '"+ modalite+ "', '"+ code_Examen+ "', '"+ libelle_Examen+ "', '"+ num_Adeli+ "', '"+ nom_Prescripteur+ "')");
                //ips.close();
                //ipsr.close();
                //br.close();
                } 
        }
    Mon problème est que si je n’exécute pas la méthode fileToSQL(File fic) dans la méthode de déplacement readRdvFileToSql, le fichier et bien déplacé, si je lance le traitement qui stock dans la BDD le fichier n'est pas déplacé... et la sa fait 3 heures que je m'arrache le peux de cheveux qu'il me reste si quelqu'un as une idée , je suis preneur.

    Pour info je traite déjà un code comme celui -ci ou tout marche nikel.!!!!

    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
    public void ReadAndMoveFile() throws IOException{        
            // répertoire courant
            File here = new File("z:/ORTHO/");
            // fichiers et répertoires du répertoire courant
            for(File content : here.listFiles()) {
                // vérifier que c'est bien un fichier et qu'il termine en .txt
            if(content.isFile() && content.getName().endsWith(".txt")) {
                File source = new File(here+"/"+content.getName());
                String filesource = source.toString();
                System.out.println(filesource);
                //log de la lecture
                writeLogFile(TimeStamp+" : LECTURE : Fichier de RDV : "+filesource+Newligne,"c:/IMROSoinsExt/Logg/FileIntegrationlog.log");
                String lecture = readFile(source);
                writeLogFile(TimeStamp+" : ECRITURE : Fichier de RDV RDV_FILE_SQL.txt contenant: "+filesource+Newligne,"c:/IMROSoinsExt/Logg/FileIntegrationlog.log");
                writeFileRdv(lecture,"z:/ORTHO/TT_DAEMON_SQL/RDV_FILE_SQL.txt");
                File destination = new File(here+"/TT_DAEMON_OK/"+content.getName());            
                //On deplace le fichier lorsque il est traité par la passerelle.
                source.renameTo(destination);
            }
         }
     
      }
    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
    //******************************
        // lecture du fichier text + on stocke la valeur dans une chaine de caractere RETURN OU.toString.
        //******************************
        public String readFile(File f) throws FileNotFoundException, IOException {
            StringWriter out;
            try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(f))) {
                out = new StringWriter();
                int b;
                while ((b=in.read()) != -1)
                    out.write(b);
                out.flush();
                out.close();
            }
           return out.toString();    
     
        }

    PS : Bien sur j'ai aucun retour d'erreur dans le compilateur.
    Merci les gas.

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    il manque beaucoup de close de partout...

    Essaie de fermer TOUS les stream, qu'ils soient in ou out, , statement, resultset, connexion, etc et correctement (dans un finally, pas à l'arrache, et test de nullité du stream avant close, et catch autour du close pour que même si ça pète, ça provoque pas un arrêt d'exécution)

    PS: si ça marche dans ton 2è exemple, c'est parce que tu utilises le "try-with-resources" de java 8 qui ferme les trucs à ta place en sortant du try.
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Merci, effectivement j'avais codé sa comme un cochon désolé du dérangement

    Phiix

  4. #4
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    un 'tit du coup?
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    yes j'ai zappé merci de ton aide.

    a+

    Phiix

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

Discussions similaires

  1. Problème de déplacement de fichier sur le Disque Dur
    Par DeFCrew dans le forum Sécurité
    Réponses: 8
    Dernier message: 11/09/2006, 11h44
  2. [Configuration] Déplacement de fichier d'un domaine vers un sous-domaine
    Par Christophe Charron dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 22/06/2006, 15h35
  3. Réponses: 4
    Dernier message: 18/05/2006, 15h00
  4. Déplacement de fichiers
    Par sourivore dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 03/05/2006, 11h48
  5. Réponses: 16
    Dernier message: 25/11/2004, 12h34

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