Ajouter texte avant et après

Résolu/Fermé
jayzman - 13 janv. 2016 à 08:54
 jayzman - 14 janv. 2016 à 08:29
Bonjour,
Je voudrai savoir comment faire pour ajouter un texte avant et après une liste des fichiers dans un autre fichier,
j'ai un code pour avoir tous les fichiers que je vais placer le nom dans un autre fichier,
voici que je vais avoir dans le fichier
#!/bin/sh/.decoder listes des fichiers séparer par espace -tab>/cygdrive/c/cygwin/home/colombna/decoder/jayztax.txt
j'ai indiqué entête et pied sur le code,

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;


public class main { 
    public static void main(String[] args){
        final JFrame fenetre = new JFrame();
        fenetre.setSize(200,200);
        fenetre.setLocationRelativeTo(null);
        fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fenetre.setVisible(true);
        JMenuBar jmb = new JMenuBar();
        JMenu jm = new JMenu("Ficher");
        JMenuItem Ouvrir = new JMenuItem("Ouvrir");
        jm.add(Ouvrir);
        jmb.add(jm);
  
        fenetre.add(jmb,BorderLayout.NORTH);
        final JFileChooser fc = new JFileChooser();
        fc.setMultiSelectionEnabled(true) ;
        Ouvrir.addActionListener(new ActionListener() {
     @Override
         public void actionPerformed(ActionEvent arg0) {
         Component fenetre = null;
        // TODO Auto-generated method stub
        int val_retour = fc.showOpenDialog(fenetre);

        if (val_retour == JFileChooser.APPROVE_OPTION) {
          File[] file = fc.getSelectedFiles();
          //Boucle qui parcourt l'ensemble de fichiers
          String entete="#!/bin/sh/.decoder ";
          String pied =" -tab>/cygdrive/c/cygwin/home/colombna/decoder/jayztax.txt";
          for(File f:file){
              //System.out.println("#! /bin/sh/.decoder " +f.getName()+ "\n");
          //   System.out.println("Chemin absolu : "+f.getAbsolutePath()+"\n");
             FileWriter writer = null;
                String texte = " "+f.getName();
                try{
                 writer = new FileWriter("D:\\one.txt", true);
                 writer.write(texte,0,texte.length());
                }catch(IOException ex){
                 ex.printStackTrace();
                    }finally{
                if(writer != null){
                    try {
                        writer.close();
                    } catch (IOException ex) {
                        Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
                    }
                        }
                        }
          }
        } else {
              System.out.println("L'ouverture est annulée\n");
        }
    }
});
	}

} 

merci
jayzman

3 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
13 janv. 2016 à 19:20
Bonjour,

Est-ce que tu avais vraiment besoin d'une interface graphique pour ça ?

Quelques méthodes utiles à connaître :
Files.readAllBytes/Files.write et Files.readAllLines/Files.write
Comme ça tu n'as pas à gérer toi même les lecture/écriture de fichiers.

Tu dois juste faire la concaténation de byte[] ou de List<String> pour mettre ton header avant et ton footer après le contenu du fichier de départ.
1
bonjour,
merci KX
c'est intéressant
jayzman
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
13 janv. 2016 à 18:54
Bonjour,

Vous pouvez le faire en créant votre "writer" avant la boucle, écrire l'entête, puis écrire la liste des fichiers dans la boucle pour terminer avec le pieds avant de fermer le writer.


String entete="#!/bin/sh/.decoder ";
String pied =" -tab>/cygdrive/c/cygwin/home/colombna/decoder/jayztax.txt";
FileWriter writer = new FileWriter("D:\\one.txt", true);
writer.write(entete);
for(File f:file){

String texte = " "+f.getName();
writer.write(texte,0,texte.length());

}
writer.write(pieds);



Tout ce code doit être mis dans un try...catch...finally comme vous l'avez déjà fait.

Bon Courage.
0
Bonjour,
Merci à vous
c'est Nikel

jayzman
0
Merci à vous
voici le code final et il marche
String entete="avant";
String pied="apres";
 FileWriter writer = null;
                try {
                    writer = new FileWriter("one.txt",true);
                } catch (IOException ex) {
                    Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
                }
                try {
                    writer.write(entete);
                } catch (IOException ex) {
                    Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
                }
                for(File f:file){
                    //System.out.println("#! /bin/sh/.decoder " +f.getName()+ "\n");
                    //   System.out.println("Chemin absolu : "+f.getAbsolutePath()+"\n");
                    String texte = " "+f.getAbsolutePath();
                    try{
                        //File.Copy("fichier1", "fichier2", true);
                        //File in = new File ("D:\\one.txt" );
                        writer.write(texte,0,texte.length());
                    }catch(IOException ex){
                        ex.printStackTrace();
                    }
                    
                }
                try {
                    writer.write(pied);
                } catch (IOException ex) {
                    Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
                }
                finally{
                        if(writer != null){
                            try {
                                writer.close();
                            } catch (IOException ex) {
                            }
                        }
                    }

jayzman
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
14 janv. 2016 à 08:26
Une remarque : pour éviter les gros blocs de code comme ceci :

FileWriter writer = null;
try {
    writer = new FileWriter("one.txt",true);
    writer.write(entete);
} catch (IOException ex) {
    ...
}
finally{
    if (writer != null) {
        try {
            writer.close();
        } catch (IOException ex) {
        }
    }
}

Tu peux faire plus simplement :

try (FileWriter writer = new FileWriter("one.txt",true)) {
    writer.write(entete);
} catch (IOException ex) {
    ...
}

Cela est possible depuis Java 7 grâce à l'interface AutoCloseable de FileWriter.
Voir : The try-with-resources Statement
0
Ah ok,je voi
merci
0