Les fichiers en Java

Les fichiers en Java - Java - Programmation

Marsh Posté le 17-11-2009 à 14:55:24    

Bonjour,  
 
Je cherche une classe Java qui prend en argument deux noms de fichiers :  
 
La classe lit chaque ligne du premier fichier et la copie dans le second fichier, si la ligne contient un seul caractère suivi d'espaces, elle ne sera pas copiée.

Reply

Marsh Posté le 17-11-2009 à 14:55:24   

Reply

Marsh Posté le 17-11-2009 à 15:00:07    

BufferedReader :o bonne idée de question de ton prof pour apprendre a faire des io propres en  java [:bien]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 17-11-2009 à 15:06:10    

Peux-tu m'aider un peu plus ?
 
C'est ma première expérience avec les fichiers en Java !

Reply

Marsh Posté le 17-11-2009 à 15:14:51    

Tu créés un BudfferedReader pour lire ton fichier ligne à ligne et tu créés un BufferedWriter que tu utiliseras pour écrire les lignes dans le 2ème (après avoir testé la ligne bien entendu).

Reply

Marsh Posté le 17-11-2009 à 16:37:50    

Voici le code d'une classe qui permet de copier le contenu d'un fichier vers un autre :
 
import java.io.*;
 
public class Main {
 public static void main(String[] args) {
 BufferedInputStream bis;
        BufferedOutputStream bos;  
         
        try {
         bis = new BufferedInputStream(new FileInputStream(new File("test.txt" )));
            bos = new BufferedOutputStream(new FileOutputStream(new File("test3.txt" )));
                byte[] buf = new byte[8];
 
                while(bis.read(buf) != -1){
                 bos.write(buf);
                }
                System.out.println("Copie terminee" );
                 
                bis.close();
                 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }      
    }
}
 
Sauf qu'ici, la copie se fait caractère par caractère, ce qui ne m'aide pas beaucoup, car je dois lire ligne par ligne. Quelqu'un aura-t-il la gentillesse de me donner son avis là-dessus ?

Reply

Marsh Posté le 17-11-2009 à 16:40:11    

il manque bos.close (), et le bis.close, mieux vaut le mettre dans un finally :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 17-11-2009 à 16:44:48    

Merci de me le rappeler, j'ai oublié de copier le bos.close()

Reply

Marsh Posté le 17-11-2009 à 17:17:25    

Aucune autre suggestion ?

Reply

Marsh Posté le 17-11-2009 à 17:50:35    

Passe ta souris au dessus des mots BufferedReader et BufferedWriter de mon message précédent (les liens envoient vers la doc)
 
Mais sinon, le code que tu montres est un bon point de départ (l'esprit y est, il faut juste l'adapter à ton besoin)
 
Pour info, les BufferedReader/Writer sont très proches des BufferedInputStream/OutputStream, ce sont des classes qui font a peut près les mêmes choses sauf que les Reader/Writer sont spécialisés dans la manipulation des fichiers texte.
 
Ex : Lecture d'un fichier image => on utilise un InputStream
      Lecture d'un fichier texte  => on utilise un Reader

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed