Ajouter texte avant et après

Résolu
jayzman -  
 jayzman -
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
A voir également:

3 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
jayzman
 
bonjour,
merci KX
c'est intéressant
jayzman
0
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
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
jayzman
 
Bonjour,
Merci à vous
c'est Nikel

jayzman
0
jayzman
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
jayzman
 
Ah ok,je voi
merci
0