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

Android Discussion :

PrintWriter et reader


Sujet :

Android

  1. #1
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut PrintWriter et reader
    bonjour ,

    PrintWriter enregistre les sauts de ligne dans un fichier , mais ensuite reader ne renvoi pas ces sauts :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	try {
    				// Création du fichier
    				newfile.createNewFile();
    				// Formater date
    				SimpleDateFormat formater = null;
    				Date aujourdhui = new Date();
    				formater = new SimpleDateFormat(" dd MMMM yyyy 'à' hh:mm");
    				// Intégration du contenu dans un PrintWriter
    				wri = new PrintWriter(new FileWriter(newfile));		
    				wri.println();
    				wri.println("Nous sommes le "+ formater.format(aujourdhui) +" : ");     
    				wri.println(monText);
    				wri.println();
    				wri.close();
                                    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		try {
    			// Récupération du contenu du fichier dans un BufferdReader
    			input = new BufferedReader(new InputStreamReader(new FileInputStream(newfile)));
    			String line;
    			StringBuffer buffer = new StringBuffer();
    			// Parcours du bufferReader et intégration dans un String
    			while ((line = input.readLine()) != null) {
    			buffer.append(line);
    			}
    			monText = buffer.toString();
    			//monText = line;
                            ...
    Est ce que le bufferReader est le bon format pour les sauts de ligne ?

    Avec String Readline; // pas de changement

    http://jmdoudoux.developpez.com/cours/developpons/java/

  2. #2
    Membre confirmé
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Points : 580
    Points
    580
    Par défaut
    Bonjour,

    C'est parce que tu utilises la fonction: readLine http://docs.oracle.com/javase/7/docs...tml#readLine()


    Returns:
    A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
    C'est donc voulu qu'elle ne retourne pas le saut.

  3. #3
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    String readLine()
    lire une ligne de caractères dans le flux.
    Une ligne est une suite de caractères qui se termine par un retour chariot '\r' ou un saut de ligne '\n' ou les deux.
    Je doit changer de méthode ou readline ?

  4. #4
    Membre confirmé
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Points : 580
    Points
    580
    Par défaut
    Exactement. C'est pour ça que tu ne les vois plus. En regardant ton code, il faudrait que tu le réajoute:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    buffer.append(line).append("\n");
    ou de manière plus efficace que tu utilises http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#read(char[],%20int,%20int) à la place puisqu'avec cette méthode, le reader ne cherche pas les sauts de lignes que tu ignores par la suite

  5. #5
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    buffer.append(line).append("\n");
    La doc Oracle n'est pas adaptée à un francophone ( readline ne lit pas les retours .. mais les lit .. )

    ok , merci

    [Résolu]

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    La plupart des doc que tu trouvera dans le monde de l'informatique sont orientées anglophone, il faudra t'y faire et t'y mettre

  7. #7
    Membre confirmé
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Points : 580
    Points
    580
    Par défaut
    Citation Envoyé par bm Voir le message
    La doc Oracle n'est pas adaptée à un francophone ( readline ne lit pas les retours .. mais les lit .. )
    En gros, readLine va lire chacun des caractères un a un jusqu'à temps qu'il trouve un saut de ligne. Lorsqu'il le trouve, il l'ignore et te retourne cette ligne sans mettre le caractère de saut de ligne à la fin.

    Le but c'est vraiment de faire des actions sur chacune des lignes (ce que tu ne fais pas) et c'est pourquoi normalement, on ne veut surtout pas avoir ce caractère dégeut.

    Puisque tu ne veux pas lire chacune des lignes les unes après les autres, mais plutôt obtenir tout le contenu, c'est la raison pour laquelle je t'ai proposé l'autre méthode "read" qui ne cherche pas la fin d'une ligne, ce qui est beaucoup plus rapide dans ton cas.

  8. #8
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Puisque tu ne veux pas lire chacune des lignes les unes après les autres, mais plutôt obtenir tout le contenu, c'est la raison pour laquelle je t'ai proposé l'autre méthode "read" qui ne cherche pas la fin d'une ligne, ce qui est beaucoup plus rapide dans ton cas.
    Non , c'est bien le saut de ligne que je veux voir . Comme dans un wiki , ou un forum , chacun écrit sa ligne .
    La date et la ligne , et le tout s'affiche ligne par ligne .
    Je commence par un fichier txt . Et je prolonge le principe avec bdd locale et distante .
    Cela va se durcir , mais bon , il ne faut pas que je reste au niveau zéro .

  9. #9
    Membre confirmé
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Points : 580
    Points
    580
    Par défaut
    Citation Envoyé par bm Voir le message
    Non , c'est bien le saut de ligne que je veux voir
    Ce n'est pas ce que ton code fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ((line = input.readLine()) != null) {
      buffer.append(line);
    }
    et tu as dit que tu voulais prendre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ((line = input.readLine()) != null) {
      buffer.append(line).append("\n");
    }
    Donc tu mets tout tout tout ton contenu dans "buffer". Si tu voulais vraiment faire ligne par ligne, tu ferais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ((line = input.readLine()) != null) {
      monAction(line);
    }

  10. #10
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Récupération du contenu du fichier dans un BufferdReader
    			input = new BufferedReader(new InputStreamReader(new FileInputStream(newfile)));
    			String line;
    			//StringBuffer buffer = new StringBuffer();
    			// Parcours du bufferReader et intégration dans un String
    			while ((line = input.readLine()) != null) {
    				monText = line;
    				//buffer.append(line).append("\n");
    			}
    			//monText = buffer.toString();
    			//monText = line;
    monText = line; // bloque tout

  11. #11
    Membre confirmé
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Points : 580
    Points
    580
    Par défaut
    ce code ne fait que te retourner la dernière ligne puisque tu ne fais rien avec chacune d'elle...

  12. #12
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    try {
    				// Création du fichier
    				newfile.createNewFile();
    				// Formater date
    				SimpleDateFormat formater = null;
    				Date aujourdhui = new Date();
    				formater = new SimpleDateFormat(" dd MMMM yyyy 'à' hh:mm");
    				// Intégration du contenu dans un PrintWriter
    				wri = new PrintWriter(new FileWriter(newfile));		
    				wri.println();
    				wri.println("Nous sommes le "+ formater.format(aujourdhui) +" : ");     
    				wri.println(monText);
    				wri.println();
    				wri.close();
                                    ...
    Le printwriter ajoute une ligne et le read liste les lignes .

    Nom : sto.jpg
Affichages : 67
Taille : 10,9 Ko

    Ce qui peut s'améliorer est l'enregistrement des caractères accentués ( é ,à ,ù ö , .. etc )

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

Discussions similaires

  1. [C#] Probleme d'insertion dans un reader
    Par bletz dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/05/2005, 16h01
  2. postgresql et acrobat reader
    Par sunshine2004 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 21/05/2005, 10h28
  3. [Delphi 6 personnel] Détecter Adobe Reader
    Par balu dans le forum Débuter
    Réponses: 3
    Dernier message: 01/03/2005, 16h10
  4. Accélérer l'ouverture d'acrobat reader 6
    Par petitours dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 20/12/2004, 13h53
  5. Réponses: 12
    Dernier message: 08/06/2004, 08h39

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