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 :

méthode write de la classe FileOutputStream


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 978
    Points : 139
    Points
    139
    Par défaut méthode write de la classe FileOutputStream
    Bonjour,

    J'ai crée une variable aEcrire de type String.
    Cette variable récupère le contenu d'une chaine de caractère saisie par un utilisateur .
    La méthode write de la classe FileOutputStream ecrit dans un fichier nouveau, le contenu de cette variable.

    En fait, cette variable contient une nouvelle chaine de caractères à chaque fois que l'utilisateur saute de ligne.
    Je vois que je suis obligée d'appeler la méthode write pour qu'il y ait un retour chariot à chaque fin de ligne.
    Est ce du fait de la méthode charAt(i) qui ne récupère pas le caractère retour chariot( qui est en fait composé de deux caractères spéciaux sous windows).
    Voici le code en question

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    import java.io.*
    public class Ecrirefichier{
    public static void main(String[]args){
     
    String nomFichier;
    fileOutputStream fichier;
    String aEcrire;
    Terminal.ecrireString("entrez le nom du fichier a creer");
     
    nomFichier=Terminal.lireString();
     
    Terminal.ecrireString("Entrez des lignes a enregistrer");
    Terminal.ecrireString("tapez FIN lorsque vous avez fini");
    try{
     
    fichier = new FileOutputStream(nomFichier);
    aEcrire = Terminal.lireString();
    while(!aEcrire.equals("FIN")){
     
    for(int i = 0;i<aEcrire.length();i++){
    fichier.write(aEcrire.charAt(i));
    }// fin  de for
     
    fichier.write('\r);
    fichier.write('\n);
    aEcrire = Terminal.lireString();
    }// fin de while
     
    fichier.close();
     
    } catch(IOException exc){
    Terminal.ecrireString("Erreur d'entree -sortie");
     
    }// fin de catch
     
    }// fin de main
     
    }// fin de classe
    Je vous informe que les méthodes LireString et ecrire Stringont le code suivant

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    public static String lireString() // Lire un String
    	{
    	    String tmp="";
    	    char C='\0';
    	    try {
    		tmp = in.readLine();
    	    }
    	    catch (IOException e)
    	    {
    		exceptionHandler(e);
    	    }
    	    return tmp;
    	} // fin de lireString()
     
     
     
    public static void ecrireString(String s){ // Afficher un String
    	try{
    	    System.out.print(s);
    	} catch (Exception ex){
    	    exceptionHandler(ex);
    	}
    Merci beaucoup de votre aide.

    Cordialement.

    Nathalie Harbonne

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    La chaine remplie par l'utilisateur ne contient pas de retour chariot. Le retour chariot est utilisé uniquement par la console pour lui dire que la saisie est terminée. La console ne transmet pas le caractère de fin de saisie. Tu dois donc ajouter toi-même le retour chariot dans le flux de destination.

    Pour info, la méthode "charAt" est parfaitement capable de renvoyer un caractère de retour à la ligne.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 978
    Points : 139
    Points
    139
    Par défaut méthode write de la classe FileOutputStream
    Bonjour et merci de ta réponse dont je tiendrai compte.
    A propos de la méthode write de la classe FileOutputStream, j'ai un petit souci:
    permet-elle d'écrire dans l'instance de la classe FileOutputStream nommée "fichier" ou permet elle d'écrire directement dans le fichier crée de nom "nomFichier".
    Si elle écrit dans l'instance de FileOutputStream, alors à quel moment y a til écriture dans le fichier de nom "nomFichier".
    En regardant lans l'api java , j'ai cru comprendre que l'écriture se fait dans l'instance de type FileOutputStream.
    Est-ce correct?.

    Merci beaucoup encore de ton aide.

    Cordialement.

    Nathalie

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    tu fais tes write via le fileoutputstream qui est un "outputstream" pointant sur le contenu d'un fichier. Autrement dit, quand cet outputstream est flushé (manuel ou automatique), c'est stocké sur le disque

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 978
    Points : 139
    Points
    139
    Par défaut méthode write de la classe FileOutputStream
    Bonjour et merci beaucoup de ta réponse.

    Je ne comprends pas très bien ce que tu veux dire par "flushé".
    Pourrais tu me faire un dessin, je pense que j'y verrai plus clair .
    Est il possible également possible de stocker sur un clé usb directement?

    Merci beaucoup de ta réponse.

    Cordialement.

    Nathalie

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ce que tu écrit dans le fileoutputstream est écrit dans le fichier dès que la méthode "flush" est appelée. Regarde la doc pour voir quelles méthodes appellent flush().

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/07/2006, 23h52
  2. Problème pour appeler une méthode d'une autre classe
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 7
    Dernier message: 03/03/2006, 14h33
  3. Méthode 'Write' undeclared
    Par def_jam_vendetta dans le forum C++
    Réponses: 11
    Dernier message: 25/02/2005, 16h37
  4. [Interface] Appeller toutes les méthodes héritées d'un class
    Par thibaut.d dans le forum Général Java
    Réponses: 4
    Dernier message: 25/01/2005, 09h42
  5. [Reflection] Exécuter une méthode donnée d'une classe
    Par schousso dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/06/2004, 11h35

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