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

C# Discussion :

Manipulation de fichier tabulaire en c#


Sujet :

C#

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut Manipulation de fichier tabulaire en c#
    Bonjour,
    j'ai un fichier texte dont je l'ai lu avec streamreader en utilisant Readline(), les données sont presentés sous forme tabulaire .
    En fait j'aimerais découper cette chaine de caractère pour enregistrer les données dans des différentes variables(par exemple lire la valeur de la 4e ligne et de 2e colonne), merci d'avance , j'espere que j'ai été claire

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Il y a quasiment autant de façon de faire que de développeurs sur la planète.

    Poste le code que tu as déjà réalisé et les problèmes spécifiques que tu rencontres.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut
    voila mon code:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    static void Main(string[] args)
            {
     
     
                string ligne = null;
                StreamReader infos = null;
                // lecture contenu du fichier
                try
                {
                    infos = new StreamReader("C:\\Documents and Settings\\Administrateur\\Bureau\\infos.txt");
                     ligne = infos.ReadToEnd();
     
                    while (ligne != null)
                    {
                        System.Console.Out.WriteLine(ligne);
                        ligne = infos.ReadLine();
                        } ...

    àprès la compilation je trouve que j'ai lu tou le fichier, alors que moi par exemple je ne veux que la 1ere ligne ou la 2e colonne par exemple

    merci

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Hum ... ton code de lecture est étrange.

    Tu utilises ReadToEnd() qui lit tout le fichier et place donc tout le contenu dans la variable de type string ligne. Inutile donc de faire un while(...) avec un ReadLine() ensuite car tu es déjà à la fin du flux et il n'y a plus rien à lire.

    Donc :

    • Ne plus utilser ReadToEnd() mais uniquement ReadLine() pour accèder aux lignes.

    • Splitter (avec Split) la chaîne obtenue qui permettra de récupérer un tableau de string.


    Ensuite, il va falloir affecter les bonnes valeurs aux bonnes variables...

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut
    ok
    normalement j'utilisais Readline() avant c'etait juste pour voir que je l'avais changé en ReadToEnd();

    sinon pour split() est ce que ce serait pas difficile de numeroter les champs pour les enregistrer dans des variables?

    j'ai un fichier de 9colonnes et 1200 lignes ...

    merci d'avance

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Tu peux utiliser une List<string[]> par exemple.

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut
    Bonjour kaidan,
    en fait je ss débutant en c#; là je viens de faire une petite recherche pour le strip, j'ai trouvé qu'il faut fournir un séparateur...
    et puis je connais pas bien encore les syntaxes , sinon est ce que tu peux etre plus claire dans les réponses , merci,

    List<string[]> ( les <> quand est ce qu'on utilise) sinon est ce que ce serait une liste de caractères le résultat.

    merci

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Par défaut
    Bonsoir,

    si tes colonnes sont toutes séparées par le même caractère comme par exemple l'espace, le caractère ";" ou le caractère "," alors tu peux utiliser la méthode splitPar exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    using (StreamReader sr = new StreamReader("chemin de ton fichier"))
    {
        while (!sr.EndOfStream)
        {
           string line = sr.ReadLine();
           string[] lineSplitted = line.Split(";");
           [...]
        }
    }
    A+

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut lire plusieurs fichiers
    merci beaucoup
    mais en fait le problème c'est que j'ai affaire à plusieurs fichiers qui se trouvent dans le mm dossier et qui n'ont pas le mm nom, je me demande si y a une facon de les lire l'un après l'autre sans entré a chaque fois un nouveau chemin, c'est à dire est ce qui y'a une façon d'automatiser le saisie du chemin d'un fichier


    merci encore pour vos suggestions

  10. #10
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string[] fichiers = Directory.GetFiles(cheminRépertoire);
    Executes la méthode d'extraction pour chaque fichier...ça devrait fonctionner

  11. #11
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut vérifier le chemin d'un répertoire
    merci sisqo ca marche ,
    mais le problème, ce que je dois vérifier si le chemin du repertoire est correcte,
    pour célà y a deja une exeption (DirectoryNotFoundException) mais moi je voulais personaliser ca, c'est à dire je voulais faire ( si le chemin du repertoire n'est pas trouvé ou incorrecte alors affiche un message d'erreur)

    j'esper que je suis claire là dessus , merci en avance

  12. #12
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut verification du chemin d'un répertoire
    J'ai l'impression que personne n'a compris,

    En fait voilà le problème : j'ai une classe qui prend en paramètre le chemin d'un répertoire, dans le constructeur de cette classe j'aimerais gérer les exeptions moi même,
    alors je fais par exemple si le chemin est null , j'affiche un message d'erreur mais maintenant le problème ce que je n'arrive pas à trouver la condition pour dire si le chemin est incorrecte ou n'existe pas pour pouvoir gerer ca aussi,

    merci si vous avez des suggestions

  13. #13
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    il existe ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (Directory.Exists(CheminRepertoire))
    {
         //extraire les fichiers
    }
    else
    {
         MessageBox.Show("Le répertoire spécifié n'existe pas!!!");
    }
    en cherchant un peu tu aurais trouvé plus rapidement qu'en attendant que les autres le fassent pour toi...

  14. #14
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut
    ce n'est pas vraiment ce que je voulais, mais ca peut aller déjà , mais merci quand même pour ta réponse sisqo , et merci pour la remarque

    je suis débutant en c# et je n'ai pas vraiment beaucoup de temps pour rechercher, d'ailleurs j'essaie et je ne postule dans le forum si je vois que je n'arrives pas!!!

    merci dans tout le cas

  15. #15
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    J'ai l'impression que personne n'a compris,
    sisi. tu es débutant mais au moins, tu as très bien expliqué ton problème depuis le début et c'est très important, surtout si tu veux que les autres puissent t'aider


    je suis débutant en c# et je n'ai pas vraiment beaucoup de temps pour rechercher,
    ca par contre, c'est un gros problème car le forum t'aidera quand tu seras coincé et si tu postes trop et à tout va, les modérateurs vont te tomber dessus. Que ce soit pour un stage ou un projet, on a toujours le temps de chercher, tanpis si c'est pas fini, ton chef ou ton prof ou autre ne te tapera pas dessus

    d'ailleurs j'essaie et je ne postule dans le forum si je vois que je n'arrives pas!!!
    ca c'est très bien


    En fait voilà le problème : j'ai une classe qui prend en paramètre le chemin d'un répertoire, dans le constructeur de cette classe j'aimerais gérer les exeptions moi même,
    alors je fais par exemple si le chemin est null , j'affiche un message d'erreur mais maintenant le problème ce que je n'arrive pas à trouver la condition pour dire si le chemin est incorrecte ou n'existe pas pour pouvoir gerer ca aussi,
    la solution qui t'a été donnée par sisqo60 est la meilleure à utiliser. Elle va tester deux choses:
    1- si le répertoire existe et donc que le chemin correspond à quelque chose de réel
    2- tester si le chemin est dans un bon format, car si une mauvaise chaine, ca va lever une exception, donc ca teste aussi le cas d'une chaine vide.

  16. #16
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    ce n'est pas vraiment ce que je voulais, mais ca peut aller déjà , mais merci quand même pour ta réponse sisqo , et merci pour la remarque

    je suis débutant en c# et je n'ai pas vraiment beaucoup de temps pour rechercher, d'ailleurs j'essaie et je ne postule dans le forum si je vois que je n'arrives pas!!!

    merci dans tout le cas

    Sympa!!! Si tu t'explique pas on peut pas te comprendre!!!

    si tu n'as pas le temps de chercher c'est quand même dommage parce tu trouveras jamais par toi même et tu n'auras jamais cette satisfaction de résoudre un problème qui t'auras pris des heures à résoudre. Chacun sa perséverance!!! On est tous passé par l'étape "Je pige rien mais il faut que je me démerde tout seul!!!", c'est comme ça qu'on a appri!!!

    PS : Pour tester l'existance d'un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File.Exists(cheminFichier);

    tchao

  17. #17
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut
    merci beaucoup Louis-Guillaume je viens de l'utiliser et ca marche ,
    et merci pour les conseils ,bonne soirrée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Manipulation de fichier (copier, supprimer, déplacer)
    Par Guigui_ dans le forum Général Python
    Réponses: 1
    Dernier message: 21/10/2004, 10h26
  2. Manipulation des fichiers
    Par monsau dans le forum Langage
    Réponses: 7
    Dernier message: 21/09/2004, 17h45
  3. [LG]Manipulation de fichiers
    Par yffick dans le forum Langage
    Réponses: 29
    Dernier message: 10/01/2004, 15h04
  4. Manipulation de fichiers - gestion d'extensions
    Par ulukai dans le forum Linux
    Réponses: 13
    Dernier message: 02/07/2003, 15h28
  5. Réponses: 2
    Dernier message: 18/01/2003, 17h06

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