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 :

Ecriture formatée dans un fichier


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut Ecriture formatée dans un fichier
    Bonjour

    Mon langage d'origine est le Fortran, mais comme j'aimerais faire une petite application avec une interface graphique j'essaye d'apprendre la java. Pour l'instant il y a certains éléments du fortran que je ne trouve pas en java, comme par exemple pouvoir écrire dans un fichier ou dans la console en choisissant le format des données.

    Pour écrire sur la console je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(" mon texte avec " + unevariable);
    J'ai vu que pour écrire dans un fichier on pouvais faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import java.io.*;
    public class EcrireFichier {
    	public static void main(String[] args) {
    		System.out.println("ecriture de toto");
    		try{
    		FileWriter Monfichier = new FileWriter("toto");
    		Monfichier.write('a');
    		Monfichier.write("bcde");
    		Monfichier.close();
    		} catch (IOException e) {
    			System.out.println("erreur");
    		}		
    	}
    }
    Mon problème c'est que moi je dois écrire essentiellement des listes de nombres et le programme ne change pas de ligne à chaque write et je ne sais pas comment lui dire le format des nombres qu'il écrit, par exemple un entier sur 4 colonnes et un double avec 5 chiffres après la virgule.

    Je sais que ce sont des questions de bases, mais je me noie un peu dans tous les manuels de cours qui sont tellement nombreux et complets que je trouve rien.

    Remarque, en fortran le code serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    open(10, file="toto",action="read")
    Do i=1, n, 1
       write( 10,"(i4,F10.5)")monentier, mondouble
       !        où    format
    Enddo
    Merci pour votre aide

  2. #2
    Membre confirmé Avatar de NutellaPiou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    Je pense que le passage à la ligne se fait avec \n

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Monfichier.write("bcde \n");
    Et pour faire une écriture formatée, vas voir ici

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 73
    Par défaut
    Bonjour,

    N'hésites pas non plus à aller voir du coté de la librairie commons-lang qui contient pas mal de fonctionnalités sur le formatage des données.

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Attention le retour à la ligne n'est pas forcément identique sur tous les systemes
    je vous recommande plutôt l'utilisation de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String newLine = System.getProperty("line.separator");
    Monfichier.write("bcde");
    Monfichier.write(newLine);
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Merci pour vos réponses

    Pour le passage à la ligne la méthode de Alkan marche nickel et sera on ne peut plus portable.

    Pour ce qui est du format je vais regarder

  6. #6
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Je comprend pas très bien

    sous éclipse j'ai pas eu de problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	System.out.printf("delta  = %10.4f", delta);
    	System.out.printf("a      = %10.4f",  a    );
    	System.out.printf("b      = %10.4f",  b    );
    Mais si dans mon terminal je fais javac maclasse.java
    il me dis que printf c'est pas pour les double ni float et il n'accepte pas le code ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	System.out.printf("delta  = %10.4f", (float) delta);
    	System.out.printf("a      = %10.4f", (float) a    );
    	System.out.printf("b      = %10.4f", (float) b    );
    Autre chose

    J'ai ce bout de codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            int npas
            ....
            npas = (int) Math.round( ( b - a ) / delta );
    	npas++;
    	System.out.printf("npas   = %10d", npas );
    et il me sort
    npas = 15011,46

    J'ai du mal à comprendre le ,46 ???? sachant que npas est un entier !

Discussions similaires

  1. extraction de données formatées dans un fichier excel
    Par slausseur dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/03/2007, 15h00
  2. Ecriture multiple dans un fichier Excel
    Par oregos dans le forum MATLAB
    Réponses: 6
    Dernier message: 14/03/2007, 14h50
  3. ecriture lecture dans un fichier
    Par maz dans le forum C
    Réponses: 3
    Dernier message: 19/10/2006, 11h21
  4. [C#]Ecriture/Suppression dans un fichier
    Par torNAdE dans le forum Windows Forms
    Réponses: 8
    Dernier message: 11/05/2006, 09h11
  5. Ecriture simultanée dans un fichier
    Par doudou34 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 30/09/2005, 14h26

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