Conversion d'un fichier texte en un fichier csv

Résolu/Fermé
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 30 mars 2017 à 21:46
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 30 mars 2017 à 23:46
Bonsoir à tout le monde,

J'ai juste une petite question à poser car dans le cadre d'un projet j'ai besoin de :

1. télécharger un fichier texte (via mon programme java) via une URL

Ce fichier texte à cette structure (mais en réalité, il fait 190 000 lignes) :


File: 02packages.details.txt
URL: https://www.cpan.org/modules/02packages.details.txt
Description: Package names found in directory $CPAN/authors/id/
Columns: package name, version, path
Intended-For: Automated fetch routines, namespace documentation.
Written-By: PAUSE version 1.005
Line-Count: 190929
Last-Updated: Wed, 29 Mar 2017 18:41:02 GMT

A_Third_Package undef C/CL/CLEMBURG/Test-Unit-0.13.tar.gz
AAA::Demo undef J/JW/JWACH/Apache-FastForward-1.1.tar.gz
AAA::eBay undef J/JW/JWACH/Apache-FastForward-1.1.tar.gz
AAAA::Crypt::DH 0.04 B/BI/BINGOS/AAAA-Crypt-DH-0.04.tar.gz
AAAA::Mail::SpamAssassin 0.002 S/SC/SCHWIGON/AAAA-Mail-SpamAssassin-0.002.tar.gz
AAAAAAAAA 1.01 M/MS/MSCHWERN/AAAAAAAAA-1.01.tar.gz
AAC::Pvoice 0.91 J/JO/JOUKE/AAC-Pvoice-0.91.tar.gz


On remarque que le fichier texte est pas top niveau structure. J'aimerai donc le convertir en csv pour que mon programme java puisse le lire facilement.

=> La phase de téléchargement de ce fichier ne me pose aucun problème..

2. Convertir le fichier texte en un fichier csv sans le lire

Existe-t-il un moyen de convertir (pas juste faire une copier/coller et remplacer l'extension du fichier) ce fichier texte en fichier csv sans le lire ? Une librairie, une API ?

Par exemple comme Excel le fait : on dit à quelle ligne on veut commencer, le séparateur et il le convertir en un csv.



Merci pour votre réponse,

Mikis

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
30 mars 2017 à 22:31
Bonjour,

Voici un exemple pour transformer ton fichier texte en CSV.

public static void main(String[] args) throws FileNotFoundException {
    try (Scanner sc = new Scanner(new File("C:/test.txt")); 
            PrintWriter pw = new PrintWriter("C:/test.csv")) {
        while (!sc.nextLine().trim().isEmpty());
        while (sc.hasNextLine())
            pw.println(sc.nextLine().trim().replaceAll("\\s+", ";"));
    }
}

Remarque : tu peux faire cette transformation directement depuis l'URL sans passer par le fichier texte intermédiaire.

Scanner sc = new Scanner(new URL("http://test.fr").openStream());
0
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019
30 mars 2017 à 23:35
Un grand merci pour ta réponse, cela fonctionne très bien !

Par contre, j'ai juste un petit problème lorsque je passe directement depuis l'URL

J'ai un fichier csv avec

 
äiÚ¼ˆâ¼E=xbNÓX’¦œ“\*$Ss¢ŽnÉU]2}ÄBK‚!\5§„¢Œ,Nê⚪SäÏÐs6†’ñý?²c»nßËÙ蟶…rDؾËØ4Í°Z»Ùäl$ý¶7ôhM¯ušmrIJ/+±¦ö‰žc(…ƒªI!ã?_ÂM÷–RH
ˆ½B+[ð”ìõ »2V-Xneögp÷Ä®Oæw[Wp¾dA´öS×±¤&í«þÄÐ]4s„MW`2³&‘5íùyý~xÞW‹t¾«T—àO\Ã;V )g˜ê^÷
ó0M
'HªŸ\H—=ÐÌØÁ:¼xÆ9u;¢?ûÐM|sÎÛ¿!u÷ÇÄÄQ’¶


Je ne m'y connais pas tellement donc je ne sais pas dire d'où cela provient, as-tu une idée ?

Encore merci !
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
30 mars 2017 à 23:38
J'ai essayé directement avec l'URL indiqué dans ton exemple et j'ai bien réussi à extraire les 190 000 lignes directement depuis le site sans aucun problème...

try (Scanner sc = new Scanner(new URL( "http://www.perl.com/CPAN/modules/02packages.details.txt").openStream()); 
        PrintWriter pw = new PrintWriter("C:/test.csv")) {
0
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019
Modifié le 30 mars 2017 à 23:44
Oui j'y arrive mais le fichier csv récupéré n'est pas lisible.. (de mon côté)
Tu arrives à le lire correctement ?

Edit : Avec ton code là ca marche, je vais voir c'est quoi la différence..

Edit 2 : j'avais mis cet URL "https://www.cpan.org/modules/02packages.details.txt.gz" du coup je comprend mieux !

Merci beaucoup :)
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
Modifié le 30 mars 2017 à 23:45
Oui il est tout à fait lisible et contient bien ce que l'on attends.
Tu arrives à y accéder en direct depuis ton navigateur ?
0
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019
30 mars 2017 à 23:46
J'avais mis cet URL "https://www.cpan.org/modules/02packages.details.txt.gz" du coup je comprend mieux !

Merci :)
0