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 :

Ajout de texte dans un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Points : 96
    Points
    96
    Par défaut Ajout de texte dans un fichier
    Bonjour,

    J'ai un fichier contenant des lignes (non, ce n'est pas une blague ). Chaque ligne commence par une date et les lignes doivent etre organisées chronologiquement.
    Les lignes sont insérées sans ordre chronologique c'est à dire que je peux déjà avoir dans mon fichier les dates 20041212 et 20041214.
    Lorsque j'ajoute une ligne, je veux qu'elle vienne s'insérer là où il faut.

    En utilisant la classe RandomAccessFile, je peux me positionner au bon endroit avec seek mais en utilisant writeBytes(ma ligne à insérer), les données contenues sur le fichier sont ecrasées par celle que je veux insérer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    donnee.writeBytes("toto");
    donnee.seek(0);
    donnee.writeBytes("a");
    j'obtiens dans le fichier "aoto" aloes que je voudrais "atoto"
    J'envisage la solution suivante :
    1 - stocker dans une variable (disons toto) tout le contenu du fichier entre le point d'insertion et la fin du fichier
    2 - insérer au début de cette variable les données à insérer
    3 - utiliser witeBytes(toto)

    Il n'y a pas de raison que cela ne marche pas mais cela va me faire réécrire une bonne partie de mon fichier à chaque ajout de ligne (surtout si je dois insérer au début du fichier).

    Quelles sont les autres solutions ?

    Merci pour votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 48
    Points : 59
    Points
    59
    Par défaut
    Slt,

    en tapant:
    Tu imposes de placer les données à la position 0 du fichier donc pile sur le premier 't' d'où le aoto. Avec:
    tu obtiendras totoa.

    Je te laisse conclure.

  3. #3
    Membre régulier

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Points : 96
    Points
    96
    Par défaut
    Merci bischof,
    C'est effectivement ce que j'avais compris. C'est pour ça que j'envisage une autre solution qui est indiquée après l'exemple

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 68
    Points : 72
    Points
    72
    Par défaut Re: [Appli][io]Ajout de texte dans un fichier
    Citation Envoyé par willowII
    Quelles sont les autres solutions ?
    Il faut procéder en deux étapes :

    1) tu enregistres tes dates à la queue leu leu à la fin de ton fichier
    2) lorsque tu as fini, ou lorsque c'est opportun, tu ranges ton fichier.

    ... et pour ce genre de trucs, c'est tout de même plus facile avec une petite base de données.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 48
    Points : 59
    Points
    59
    Par défaut
    Excuses-moi, j'ai été un peu vite en besogne.

    A part passer par un fichier temporaire, je vois pas comment tu peux t'y prendre. Ta solution 2 utilises un fichier temporaire ou du moins l'équivalent mais en mémoire vive.

    Sauf en t'amusant a agrandir ton fichier et y recopier en décalant de x bytes (= nb bytes a insérer) vers la fin toutes les lignes suivant celle que tu insères (bel algo en perspective). Je suis pas sûre que la JVM ne va pas crée elle-même un fichier temporaire.

    Il y a beaucoup de dates parce que entre beaucoup de calculs (trier ensuite) et d'écriture (passer par un fichier temporaire), le choix à faire dépend de la taille du fichier.

  6. #6
    Membre régulier

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Points : 96
    Points
    96
    Par défaut
    tileffeleauzed,

    Effectivement, au début je passais par une base de donnees mais je trouvais les perfos mauvaises (peut-être n'ai-ja pas trop optimisé les choses).
    J'ai testé la solution que je propsoe et là c'est carrément lent, sans doute car je passe mon temps à ouvrir et fermer les fichiers. Il faudrait que je ne ferme que quand je suis sur de ne plus rien avoir a y mettre. Si les perfos ne me satisfont toujours pas, je retournerais sans doute aux bases de données.


    bischof,

    Effectivement, ta réponse était un peu haté mais je n'ai pas voulu te le dire
    Il va y avoir beaucoup de dates : il s'agit d'historiques de cours de bourses en journalier. J'ai donc un fichier par action et une ligne par jour de cotation. Cela va faire pas mal

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 48
    Points : 59
    Points
    59
    Par défaut
    "historique de cotation"

    J'avais commencé un projet similaire mais PostreSQL refusant de compiler sous ma Debian j'ai arrêté (la vie a côté aussi ma fait comprendre que j'en aurais pour des mois à le faire). J'avais aussi pensé à la base de donnée 'spéculant' qu'elle serait plus optimisée que mes traitement de fichier texte.

    Analyse graphique ou fondamental?
    PER ou triangle et canaux?
    Trading ou placement?

    Finalement, ma copine du moment et mon bon sens mon guidés vers zonebourse.com et boursorama.com mais si tu cherches un volontaire pour t"épauler je veux bien en être (je ne développe qu'avec des gens qui documentent leur code plus richement qu'avec des commentaires de fonction 8) ).

  8. #8
    Membre régulier

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Points : 96
    Points
    96
    Par défaut
    Je suis donc revenu à mes bases de données et finalement les perfos sont carrément meilleures qu'en passant par File :
    fichier intial de 4 Mo contenant les cours de 400 actions :
    Création de 400 fichiers + ajout des cotations : 68 secondes
    Création de 400 tables + ajout des données : 24 secondes

    Il n'y a vraiment pas photo

    Concernant ce projet :
    Plus exactement analyse technique
    ni l'un ni l'autre mais détection de certains critères
    Disons plutôt placement

    Très sympa ta proposition mais je n'en suis qu'au début et pour l'instant il n'y a pas de travail pour deux mais je prends bonne note de ta proposition et n'hésiterai pas à te contacter dès que le besoin s'en fera sentir

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

Discussions similaires

  1. [Batch] Ajouter une ligne dans un fichier texte
    Par bbor99 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 03/10/2011, 08h53
  2. Ajouter du texte dans un fichier pdf
    Par bremer dans le forum Langage
    Réponses: 1
    Dernier message: 08/03/2008, 17h15
  3. Sauvegarde et ajout de données dans un fichier texte
    Par hanane78 dans le forum MATLAB
    Réponses: 8
    Dernier message: 22/05/2007, 13h07
  4. Ajout de blanc dans un fichier texte
    Par mael94420 dans le forum WinDev
    Réponses: 6
    Dernier message: 21/07/2006, 10h04
  5. [FPDF] ajout texte dans un fichier pdf modèle?
    Par moabomotal dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/06/2006, 16h36

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