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

Entr�e/Sortie Java Discussion :

Ajouter une colonne � un fichier txt ou csv en Java


Sujet :

Entr�e/Sortie Java

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2019
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Webmaster
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Avril 2019
    Messages : 5
    Par d�faut Ajouter une colonne � un fichier txt ou csv en Java
    Bonjour,
    j'ai un fichier de sortie type csv avec des colonnes (N�, Sexe, DatedeNaissance,Prenom, Nom) et je cherche � ajouter une colonne doublons � ce fichier de sortie mais je ne sais pas quelle classe utiliser.

    Merci si vous avez des pistes....ou des exemples de code

  2. #2
    Mod�rateur
    Avatar de joel.drigo
    Homme Profil pro
    Ing�nieur R&D - D�veloppeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 56
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D - D�veloppeur Java
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par d�faut
    Salut,

    Il y a trois probl�matiques :

    1. lire, manipuler et �crire du csv
      1. tu peux utiliser une biblioth�que d�di�e comme Apache Commons CSV, avec trois
        classes principales, CSVParser pour lire, CSVRecord pour manipuler chaque lignes, CSVPrinter pour �crire des lignes.
      2. Un CSV �tant un fichier texte de lignes de valeurs s�par�es par des virgules, on peut
        1. le lire et l'�crire avec java.nio2.Files
          • on peut lire toutes les lignes pour les mettre dans une liste par exemple (m�thode readAllLines())
          • si le fichier est tr�s grand et qu'il faut �viter de le charger entier en m�moire, on peut le lire ligne � ligne pour traiter les lignes s�par�ment et les r��crire s�par�ment, avec la classe java.io.BufferedWriter ou la classe java.io.PrintWriter.
            Mais comme on ne peut d�terminer si une ligne est un doublon sans lire toutes les autres lignes, on sera oblig� de lire plusieurs fois le fichier : un premi�re fois pour d�terminer les doublons, on seconde fois pour �crire les lignes avec la colonne suppl�mentaire. Avec un grand nombre de doublons, on risque de charger quand m�me beaucoup de lignes. On peut aussi lire autant de fois que de lignes, mais �a peut prendre beaucoup de temps.
        2. le lire et l'�crire avec java.io.BufferedReader et java.io.BufferedWriter ou la classe java.io.PrintWriter
    2. d�tecter les doublons
      1. on peut simplement comparer les lignes, des String, directement avec un equals()
      2. s'il faut comparer valeurs � valeurs, �ventuellement avec des traitements (comme ignore les espaces, la casse, etc), la bibilitoh�que donnera un acc�s direct aux valeurs de chaque colonne. Sans la blioth�que on peut diviser une String avec la m�thode split(), ou utiliser Pattern pour faire des comparaison par expressions r�guli�res

      Ensuite pour d�terminer si une ligne est un doublon, on peut utiliser un Set. Si une ligne est d�j� dans le Set, alors elle est un doublon, sinon on l'�crit dans le Set.

    3. ajouter une colonne pour y caract�riser la ligne comme doublon
      1. le traitement via la biblioth�que Apache Commons oblige � transformer le CSVRecord en List par exemple puis � ajouter une valeur � la Liste et � �crire cette liste (CSVPrinter).
      2. le traitement sans la biblioth�que, on peut simplement ajouter apr�s avoir �crit la ligne mais avant d'�crire le s�parateur de ligne, les caract�res n�cessaires (une virgule, puis la valeur caract�risant la ligne comme doublon
        1. on peut caract�riser la ligne avec un simple bool�en, ou une valeur, par exemple "doublon"
        2. on peut vouloir conna�tre la liste des lignes qui sont la m�me que cette ligne, donc une liste de num�ro de lignes
          1. donc soit simplement un compteur (int), qu'on associe � chaque ligne, et qu'on stocke dans une List
          2. si on charge toutes les lignes, on peut utiliser via Stream, un Collector de type grouping pour obtenir directement une Map<classe qui repr�sente les valeurs, classe qui donne la liste des num�ros), qui donne les doublons naturellement, sous forme de LinkedHashMap, pour conserver l'ordre.
            |*]s'il existe une colonne d'identifiant (tu parles de N�, donc c'est � priori le cas), il peut servir � la place du num�ro. Il faudra juste ne pas en tenir compte lors des comparaisons �videmment (soit on ignorant la colonne si on a diviser la ligne en colonnes, soit en tenant compte dans l'expression r�guli�re, ou par les m�thodes de String (indexOf, substring, etc).





    Enfin tu parles de fichier de sortie : qu'est-ce qui produit ce fichier ? Le traitement de doublons est peut �tre souhaitable avant de le produire. Mais �a, �a d�pend compl�tement de la fa�on utilis�e pour g�n�rer ces informations.
    L'expression "�a marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le probl�me.
    La plupart des r�ponses � vos questions sont d�j� dans les FAQs ou les Tutoriels, ou peut-�tre dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement pos�e et r�dig�e et vous aurez plus de chances de r�ponses adapt�es et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'�diteur de messages).
    Nouveau sur le forum ? Consultez Les R�gles du Club.

Discussions similaires

  1. C++ : Ajouter une ligne � un fichier txt
    Par rattlesnake dans le forum C++
    R�ponses: 9
    Dernier message: 11/09/2014, 17h05
  2. [Toutes versions] Ajouter une colonne dans un fichier dbf � partir d'ACCESS
    Par loufab dans le forum Contribuez
    R�ponses: 2
    Dernier message: 13/05/2012, 13h07
  3. Ajouter une colonne � un fichier csv contenant les resultats d'un calcul
    Par Freedd dans le forum D�veloppement de jobs
    R�ponses: 2
    Dernier message: 31/07/2008, 12h01
  4. R�ponses: 7
    Dernier message: 02/07/2007, 16h06
  5. [vb.net] ajouter une ligne � un fichier txt existant
    Par tbdarkspirit dans le forum VB.NET
    R�ponses: 2
    Dernier message: 25/05/2007, 11h41

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