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

Discussion :

Écrire dans un fichier avec QFile et QTextStream

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 28
    Par défaut Écrire dans un fichier avec QFile et QTextStream
    Bonjour,

    je souhaite tenir a jour un fichier .csv via QFile et QTextStream.

    Donc je recherche la ligne a mettre a jour avec des readLine et j'écris mes données avec << mais cela écris a chaque foi a la fin du fichier sans tenir compte de la position obtenue par les readLine.

    je n'ai pas trouvé d'autre solution viable dans la doc ni sur le net pour arriver à ce résultat.

    voici un résumé du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    QFile fichierAMettreAJour("CheminFichier");
    if (fichierAMettreAJour.open(QIODevice::ReadWrite | QIODevice::Text))
    {
        QTextStream fStream(&fichierAMettreAJour);
        while(!ligneAMettreAJour)
        {
             fStream.readLine();
        }
        fStream << infoARajouter;
        fichierAMettreAJour.close();
    }

  2. #2
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Comme l'indique le nom de la classe, QTextStream est un flux. Tu le lis donc de façon linéaire et écris à la fin. C'est comme ça que ça marche.

    Si tu veux remplacer du texte, tu vas devoir te tourner vers une autre classe. Peut être QTextDocument et QTextCursor ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 28
    Par défaut
    Ok mais la classe QTextDocument m'a l'air un poil trop évoluée pour un simple .csv donc sachant que je stock à l'ouverture du prog le contenu du fichier dans un QStandardItemModel, n'y a-t-il pas un moyen de supprimer le contenu du fichier pour le réécrire en entier ?

  4. #4
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par kennylafougere Voir le message
    Ok mais la classe QTextDocument m'a l'air un poil trop évoluée pour un simple .csv donc sachant que je stock à l'ouverture du prog le contenu du fichier dans un QStandardItemModel, n'y a-t-il pas un moyen de supprimer le contenu du fichier pour le réécrire en entier ?
    Il te suffit de créer un nouveau flux ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 28
    Par défaut
    euh ... je suis pas sûr de comprendre en quoi créer un nouveau flux va supprimer le contenu du fichier qui est ouvert avec QFile.

  6. #6
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QTextStream ( FILE * fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite )
    avec QIODevice::Truncate ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 28
    Par défaut
    Oui j'y ai pensé mais sa donne rien (ou je m'y prend mal).

    donc j'essaie de carrément supprimer le fichier pour le recréer.

    édit : Bon j'ai refait un essai avec truncate sa marche nikel.
    merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2013, 11h07
  2. Écrire dans un fichier avec des accents
    Par lostsoul dans le forum Débuter
    Réponses: 8
    Dernier message: 22/04/2012, 09h15
  3. Comment écrire dans un fichier avec System.setOut?
    Par zemzoum89 dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 06/10/2010, 22h10
  4. écrire dans un fichier avec retour à la ligne
    Par qmike dans le forum Langage
    Réponses: 4
    Dernier message: 18/09/2009, 15h44
  5. comment écrire dans un fichier avec Ant-apache
    Par sidi.elmoctar dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 25/04/2006, 17h44

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