Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
945 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] éliminer la redondance dans un fichier texte !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] éliminer la redondance dans un fichier texte !

n°624236
roievil
Taking Fire, Need Assistance..
Posté le 28-01-2004 à 20:11:33  profilanswer
 

Salut quel est le moyen le plus simple d'éliminer la redondance en JAVA dans un fichier texte du type suivant :  
 
L2B0200_A16_DLS132_064.ab1  CHROMAT_FILE: L2B0200_A16_DLS132_064
L2B0205_N07_DLS144_020.ab1  CHROMAT_FILE: L2B0205_N07_DLS144_020
L2B0202_B09_DLS134_047.ab1  CHROMAT_FILE: L2B0202_B09_DLS134_047
L2B0204_C17_DLS146_077.ab1  CHROMAT_FILE: L2B0204_C17_DLS146_077
L2B0202_B09_DLS134_047.ab1  CHROMAT_FILE: L2B0202_B09_DLS134_047
.
.
.
L2B0204_C17_DLS146_077.ab1  CHROMAT_FILE: L2B0204_C17_DLS146_077
 
 
c'est a dire enlever toutes les lignes quis ont identiques
 
Bon moi j'ai pensé a ça mais je n'ai aps testé je veux juste savoir si y a pas de meilleur méthode ce qui m'embête c de fixer une valeur a b.mark(valeur)
 

Code :
  1. public static void Deredonder(String cheminEntree) throws FileNotFoundException, IOException {
  2.  FileReader f = new FileReader(cheminEntree);
  3.  BufferedReader b = new BufferedReader(f);
  4.  FileWriter fw = new FileWriter(FenetreBlast.cheminSaveSeq2, false);
  5.  PrintWriter pw = new PrintWriter(fw);
  6.  String ligneLue = "";
  7.  String ligneLue1 = "";
  8.  while(ligneLue != null) {
  9.   ligneLue = b.readLine() ;
  10.   b.mark(30000) ;
  11.   ligneLue1 = b.readLine() ;
  12.   while(ligneLue1 != null && !ligneLue.equals(ligneLue1)){
  13.    if(!ligneLue.equals(ligneLue1)){
  14.     pw.println(ligneLue) ;
  15.    }
  16.    ligneLue1 = b.readLine() ;
  17.   }
  18.   b.reset() ;
  19.  }
  20. b.close() ;
  21. pw.close() ;
  22. }


 
 
merci

mood
Publicité
Posté le 28-01-2004 à 20:11:33  profilanswer
 

n°624254
benou
Posté le 28-01-2004 à 20:31:04  profilanswer
 

Il est gros ton fichier ?


---------------
ma vie, mon oeuvre - HomePlayer
n°624265
Bufff
Posté le 28-01-2004 à 20:44:43  profilanswer
 

Est-ce que l'ordre des lignes doit être conservé?
Si l'ordre n'est pas important, alors il suffit de placer les lignes les unes après les autres dans un Set.
Un Set garantit qu'on n'a aucun doublon.

Code :
  1. public static void deredonder(String cheminEntree) throws FileNotFoundException, IOException {
  2. FileReader f = new FileReader(cheminEntree);
  3. BufferedReader b = new BufferedReader(f);
  4. FileWriter fw = new FileWriter(FenetreBlast.cheminSaveSeq2, false);
  5. PrintWriter pw = new PrintWriter(fw);
  6. Set resultat = new HashSet();
  7. String ligne = b.readLine();
  8. while (ligne!=null) {
  9.   resultat.add(ligne);
  10.   ligne = b.readLine();
  11. }
  12. for (Iterator it = resultat.iterator(); it.hasNext();)
  13.   pw.println(it.next());
  14. b.close();
  15. pw.close();
  16. }


Message édité par Bufff le 28-01-2004 à 20:46:33
n°624271
roievil
Taking Fire, Need Assistance..
Posté le 28-01-2004 à 20:50:26  profilanswer
 

ben le probleme c que c variable mais il ne sera jamais tres gros je le situe dans les environs de maximum 1000 lignes de 50 caracteres...
 
cela change t'il qqchose?

n°624320
xav14
Posté le 28-01-2004 à 22:10:26  profilanswer
 

Bufff a écrit :

Est-ce que l'ordre des lignes doit être conservé?
Si l'ordre n'est pas important, alors il suffit de placer les lignes les unes après les autres dans un Set.
Un Set garantit qu'on n'a aucun doublon.

Code :
  1. public static void deredonder(String cheminEntree) throws FileNotFoundException, IOException {
  2. FileReader f = new FileReader(cheminEntree);
  3. BufferedReader b = new BufferedReader(f);
  4. FileWriter fw = new FileWriter(FenetreBlast.cheminSaveSeq2, false);
  5. PrintWriter pw = new PrintWriter(fw);
  6. Set resultat = new HashSet();
  7. String ligne = b.readLine();
  8. while (ligne!=null) {
  9.   resultat.add(ligne);
  10.   ligne = b.readLine();
  11. }
  12. for (Iterator it = resultat.iterator(); it.hasNext();)
  13.   pw.println(it.next());
  14. b.close();
  15. pw.close();
  16. }




 
au pire t'y ajoutes une variable d'ordre

n°624362
roievil
Taking Fire, Need Assistance..
Posté le 28-01-2004 à 23:04:01  profilanswer
 

a priori l'ordre n'a pas d'importance merci bien je vous remercie je suis debutant alors il va falloir que je digère un peu le coup du :
 
     for (Iterator it = resultat.iterator(); it.hasNext();)  
 
ca sort d'ou?

n°624370
Taz
bisounours-codeur
Posté le 28-01-2004 à 23:28:01  profilanswer
 

sort < fichier | uniq :D
 
pour la variable d'ordre pour avoir un tri stable, faut utiliser la méthode DSU (bien connu des programmeurs python) Decorate-Sort-Undecorate.
 
ça ajoute juste N à ta complexité ce qui est peu. en gros avant de tout balancer dans le hashset, il faut tranformer les entrées
 
data -> [data, indice] -> traitement -> data
 
et le voilà ton tri stable.

n°624373
Jubijub
Parce que je le VD bien
Posté le 28-01-2004 à 23:31:02  profilanswer
 

arf...
 
faudrait que je m'achète un bon bouquin d'algoritmie ou de maths appliquées à la prog...les algos dans ce style faut maitriser je pense...
 
-->sinon oui si ct une db en sql c torché en une requete...


Message édité par Jubijub le 28-01-2004 à 23:31:39

---------------
Jubi Photos : Flickr - 500px
n°624375
benou
Posté le 28-01-2004 à 23:32:16  profilanswer
 

roievil a écrit :

ben le probleme c que c variable mais il ne sera jamais tres gros je le situe dans les environs de maximum 1000 lignes de 50 caracteres...
 
cela change t'il qqchose?


oui : t'es fichiers sont relativement petit donc tu peux te permettre de stocker toutes les lignes en mémoire (dans un set par exemple comme le disait buff)


---------------
ma vie, mon oeuvre - HomePlayer

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] éliminer la redondance dans un fichier texte !

 

Sujets relatifs
Ouvrir un user form à l'ouverture d'un fichier excel[Java] Sockets et http
comment copier ou supprimer un fichier sur le disque dur en c++ ?probleme pour parser un format notation scientifique (ex : e-179) JAVA
Aligner verticalement une image puis un texte dans une cellule[VB] Problème avec la lecture d'un fichier
[JAVA] Afficher en couleur dans la console (sous Windows) ????[HTML/ Flash] Lire en Live un fichier depuis une page HTML, ou Flash ?
[Help] executer un programme java[XML-RPC] implémentation JAVA - Où trouver de la doc précise ?
Plus de sujets relatifs à : [JAVA] éliminer la redondance dans un fichier texte !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR