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 :

[fichier] modifier (lire ET écrire) un fichier


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 70
    Points : 51
    Points
    51
    Par défaut [fichier] modifier (lire ET écrire) un fichier
    Bonjour,

    Je travaille en C#(2.0 ou + si nécessaire) avec VS2008.

    Je cherche à savoir comment faire pour modifier un fichier. Chaque ligne de ce fichier représente un objet précis, et je vais être amené à modifier une ligne dans le fichier suivant un paramètre qu'on m'indiquera en entrée.

    Je ne souhaite pas ouvrir deux flux (StreamReader, StreamWriter). J'aimerai bien trouver un moyen de lire mon fichier, d'arriver à la ligne souhaitée, la modifier, puis enregistrer.

    Pour le moment à part faire un gros truc moche du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String[] tableauLigne = File.ReadAllLines(monFichier);
    //...Mon traitement
    File.WriteAllLines(monFichier, tableauLigne);
    je n'ai pas trouvé autre chose.

    La lecture avec le fileStream:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileStream filesStream = new FileStream(fichier.FullName, FileMode.Open,FileAccess.ReadWrite);
    ne m'arrange pas non plus, car je ne connais pas le nombre d'octets que représente chaque ligne...

    Je pense malgré tout qu'il existe quelque chose de plus sexy, et c'est dans cette optique que je viens ici en quête d'informations!

    Merci d'avance!

    Rastamath69

  2. #2
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Salut.

    Malheureusement, tu ne peux pas modifier dynamiquement un fichier. Tu es obligé de passer par l'écriture de tes lignes dans un autre fichier ou l'écrasement de ton fichier original.

    Bon courage

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 70
    Points : 51
    Points
    51
    Par défaut
    Hello!

    Tout d'abord merci pour ta réponse.

    Par contre implique-t-elle (ta réponse) qu'une application comme, par exemple, le bloc-note, quand je modifie une ligne, va ré-écraser tout le fichier au moment où je fais "enregistrer"?

    Si c'est le cas, d'un coté cela m'ennuie pour ce que je veux faire, mais d'un autre cela me rassure donc, dans le sens où c'étaient normal que les recherches que j'ai menées sont restées infructueuses!

    Rastamath69

  4. #4
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Malheureusement, tu ne peux pas modifier dynamiquement un fichier. Tu es obligé de passer par l'écriture de tes lignes dans un autre fichier ou l'écrasement de ton fichier original.
    Heuu pas tout a fait !
    Il existe bien un mode d'ouverture permettant de lire par bloc et de recrire le bloc dans le meme fichier

    Mais comme manifestement le fichier de rastamath69 est un fichier contenant des lignes de textes en longueur variable, c'est impraticable

    Par ailleurs chaque fois que je lis un File.ReadAllLines(monFichier); ca me fait peur
    Ce n'est valable QUE
    1-Si on a conscience préalable de la taille du fichier
    2-Si il est obligatoire de gerer tous le contenu en memoire

    Sinon Le readline est largement preférable !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 70
    Points : 51
    Points
    51
    Par défaut
    Salut,

    Le souci avec le "readLine", c'est qu'il m'obligerait à ouvrir deux flux (un lecture et un écriture) : ce que je souhaiterais éviter.

    Sinon je suis bien d'accord avec toi que le "ReadAllLines" n'est pas très fin... C'est d'ailleurs pour cela que je cherche une autre solution.
    Mais j'ai quand même des atouts de mon côté pour cela (même si c'est moche) :
    - le fichier ne fait que quelques Ko (je pense qu'il atteindra le Mo d'ici 20 ou 30 ans!
    - La gestion en mémoire permet de limiter les accès disques, et d'améliorer les performances (même si cela ne se verra pas dans mon cas!)

    Pour ce qui est d'accéder au fichier en lecture / écriture, j'ai l'impression que tu me confirmes qu'il n'existe pas d'autres moyens que le fileStream où il faut effectivement connaitre la taille de chaque ligne (si on souhaite travailler avec ces dernières)

    J'ai bien l'impression que cette fois je n'aurais pas d'astuce pour contourner mon souci

    Je laisse ce post pour le moment ouvert pour voir si quelqu'un aurait une autre solution!

    Rastamath69

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Citation Envoyé par rastamath69 Voir le message
    - le fichier ne fait que quelques Ko (je pense qu'il atteindra le Mo d'ici 20 ou 30 ans!
    - La gestion en mémoire permet de limiter les accès disques, et d'améliorer les performances (même si cela ne se verra pas dans mon cas!)
    Dans ce cas, effectivement !
    Pas besoin de s'embeter, tu glupe tout en memoire tu traite et tu deglupe le tout !

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

Discussions similaires

  1. Lire et écrire un fichier de façon portable
    Par sharky.fr dans le forum C
    Réponses: 4
    Dernier message: 05/02/2009, 18h23
  2. Réponses: 1
    Dernier message: 16/09/2008, 13h30
  3. Lire et écrire un fichier XML
    Par Palca dans le forum Smalltalk
    Réponses: 0
    Dernier message: 28/04/2008, 11h40
  4. lire et écrire un fichier ppm
    Par bipbip2006 dans le forum Débuter
    Réponses: 6
    Dernier message: 08/04/2008, 16h24
  5. Réponses: 9
    Dernier message: 05/04/2005, 09h39

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