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 :

methode qui cree un fichier texte, et methodes qui permettent d'écrire dedans


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 52
    Points
    52
    Par défaut methode qui cree un fichier texte, et methodes qui permettent d'écrire dedans
    Bonjour,

    je souhaite ecrire une methode qui permettent de creer un fichier texte,
    et une methode qui permet d'ajouter des données dans ce fichier txt,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void creerfichier(String nomFichier){}
    public void ajouter(){}
     
    public static voir main {
    }
    voila je sais pas trop comment commencer, les seul moyen que je trouve ne passent pas par des méthode or dans mon cas je dois passer par cela (de maniere a pouvoir reprendre le fichier quand je le souhaite.

    Merci d'avance
    olivier

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Il te sera impossible de faire une application Java sans passer par des objets a un moment ou a un autre. cependant tu peux stoker des objets dans une variable qui sera visible par les deux méthodes comme par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private FileOutputStream fluxFichier;
     
    public void creerfichier(String nomFichier){
        fluxFichier=new FileOutputstream(new File(nomFichier));
    }
     
    public void ajouter(String texte){
        fluxFichier.write(texte);
    }
     
    public static voir main {
    }

  3. #3
    Rédacteur/Modérateur
    Avatar de Metafire18
    Homme Profil pro
    Ingénieur de recherche Orange Labs
    Inscrit en
    Décembre 2007
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur de recherche Orange Labs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 777
    Points : 1 894
    Points
    1 894
    Billets dans le blog
    1
    Par défaut
    Et tu peux même en plus de ca utiliser le système de buffer qui te permettra de gagner en vitesse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private BufferedOutputStream fluxFichier;
     
    public void creerfichier(String nomFichier){
        fluxFichier=new BufferedOutputStream(new FileOutputstream(new File(nomFichier)));
    }
     
    public void ajouter(String texte){
        fluxFichier.write(texte);
    }
     
    public static voir main {
    }
    Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.

  4. #4
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 126
    Points : 91
    Points
    91
    Par défaut
    mouai si on utilise un bufferOutputStream, un petit flux.flush() serait bien utile apres le flux.write(texte) car sinon le texte ne sera écrit que lors du flux.close() et donc si le programme plante qq part rien ne sera écrit au final !

  5. #5
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    sinon le texte ne sera écrit que lors du flux.close() et donc si le programme plante qq part rien ne sera écrit au final !
    C'est pour cela que je n'ai pas proposé de buffer. Ça peux être plus performant, mais si on ne sait pas ce que ça fait, on peut avoir des surprises.

    Par contre si on fait flush() systématiquement après chaque write(), je ne vois plus trop l'intérêt de passer par un buffer.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 52
    Points
    52
    Par défaut
    voila mon code pour le moment, j'ai été obliger de rajouter les throw*** pour que ça m'enlève des erreurs , cependant le .write il veut un int derrière... donc pour le moment ça ne marche pas , qu'est-ce qu'il faut que je modifie ?

    merci déjà pour vos réponse

    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
    import java.io.*;
     
    public class CompterLigne {
     
    	public FileOutputStream fluxFichier;
     
    	public void creerfichier(String nomFichier) throws FileNotFoundException{
    	    fluxFichier=new FileOutputStream(new File(nomFichier));
    	}
     
    	public void ajouter(String texte) throws IOException{
    	    fluxFichier.write(texte);
    	}
     
     
     
     
    public static void main(String [] arg){
     
    }
     
    }

  7. #7
    Rédacteur/Modérateur
    Avatar de Metafire18
    Homme Profil pro
    Ingénieur de recherche Orange Labs
    Inscrit en
    Décembre 2007
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur de recherche Orange Labs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 777
    Points : 1 894
    Points
    1 894
    Billets dans le blog
    1
    Par défaut
    Dans ton cas, tu dois passer par un tableau de bytes que tu pourras ensuite utiliser sans problème comme argument de ta méthode write :
    byte[] buffer = new byte[X];

    Mais tu peux regarder du côté des fileWriter qui permettent l'écriture de String sans passé par un tableau de byte

    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
     
    import java.io.*;
     
     
    public class CompterLigne {
     
    public File fichier; 
    public FileWriter fluxOut;
     
    public void creerfichier(String nomFichier) throws FileNotFoundException{
    fichier=new File(nomFichier);
    fluxOut=new FileWriter(fichier);
    }
     
    public void ajouter(String texte) throws IOException{
    fw.write(texte);
    }
     
    public static void main(String [] arg){
     
    }
     
    }
    Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 52
    Points
    52
    Par défaut
    alors j'ai mis ton code ,
    pareil j'ai du modifier un truc sinon ça me mettait une erreur avec les exception et tout donc c'est devenu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void creerfichier(String nomFichier) throws FileNotFoundException{
    fichier=new File(nomFichier);
    try {
    	fluxOut=new FileWriter(fichier);
    }
    catch (IOException e) {
    	e.printStackTrace();
    }
    }
    j'ai mis mon main en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static void main(String [] arg){
     creerfichier("test.txt");
    }
    erreur suivante sur le creerfichier :
    Cannot make a static reference to the non-static method creerfichier(String) from the type CompterLigne
    je suis pas très très bon en java, et là j'avoue que je comprend plus rien à ce qu'il se passe

  9. #9
    Rédacteur/Modérateur
    Avatar de Metafire18
    Homme Profil pro
    Ingénieur de recherche Orange Labs
    Inscrit en
    Décembre 2007
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur de recherche Orange Labs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 777
    Points : 1 894
    Points
    1 894
    Billets dans le blog
    1
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    import java.io.*;
     
     
    public class CompterLigne {
     
    public File fichier;
    public FileWriter fluxOut;
     
    public CompterLigne(String nomFichier) throws FileNotFoundException, IOException{
    fichier=new File(nomFichier);
    fluxOut=new FileWriter(fichier);
    }
     
    public void ajouter(String texte) throws IOException{
        fluxOut.write(texte); 
        fluxOut.flush(); //Pour envoyer le buffer dans le fichier
    }
     
    public static void main(String [] arg) throws FileNotFoundException, IOException{
     
        CompterLigne test=new CompterLigne("test2.txt");
        test.ajouter("Ma phrase");
    }
     
    }
    Pas de grandeur pour qui veut grandir. Pas de modèle pour qui cherche ce qu'il n'a jamais vu.

  10. #10
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Penses a poster ton code entre les balises [code ] et [/code ] pour ne pas perdre l'indentation

    voila mon code pour le moment, j'ai été obliger de rajouter les throw*** pour que ça m'enleve des erreur
    Oui ma réponse était simplifiée, je n'ai pas pris en compte la gestion des exceptions.Sache cependant que throws ne fait que reporter déporter l'exception.
    Tes méthodes creerfichier() et ajouterFichier() devront être exécutées dans un bloc try/catch/finaly. Renseigne toi sur le fonctionnement des exception en Java.

  11. #11
    Invité
    Invité(e)
    Par défaut
    La solution de Metafire marche, mais si tu as envie de comprendre la différence entre "static" et "non static" (faire du copier/coller de code sans chercher à comprendre ne va pas te mener bien loin) il va falloir que tu te renseigne un peu sur la programmation orientée objet. Si tu es habitué au C, au PHP ou à d'autres langages impératifs tu vas devoir te plonger un minimum dans la théorie qui sous-tend le langage Java. Tu verras c'est pas bien compliqué, mais passer du C/PHP au Java implique de changer la manière dont tu conçois tes programmes.

    Pour faire vite les attributs et méthodes static (ici ta méthode main) sont communs à tous les objets du type CompterLigne tandis que les attributs et méthodes non static (tes autres méthodes et les attributs fichier et fluxOut) ne sont utilisables qu'au sein d'une instance de la classe CompterLigne.

    C'est pour cela qu'il te faut créer un objet de type CompterLigne et à partir de cette instance faire appel à la méthode ajouter().

  12. #12
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 52
    Points
    52
    Par défaut
    en effet la methode marche , je mi replongerai un peu plus tard parce que meme si je suis pas un maniaque, j'aime pas mettre du code que je comprend pas, en fait j'ai assez honte parce que je fait du java en cours depui un petit moment mais rien de tres pousser et je suis tres vite perdu, en effet je travail bcp plus sur du php,
    en tt cas ça fait plaisir de voir de l'entraide (c'est pas partout!!)
    je vais reregarder tout ces post de plus pres

    et aussi les fameuse methode static, non static comme tu me le dit.

  13. #13
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 52
    Points
    52
    Par défaut
    de toute facon il y a des ti truc a modifier
    parce que la ça creer le fichier a chaque fois du coup, mé il faudrais que s'il existe il soit pris en compte et pas ecraser,
    je pense que la condition doit etre mis au nivo de la methode compterLigne
    mais je sais pas ce qu'il faut mettre si vois que le fichier texte existe il faut bien definir qu'il en sera la cible...

  14. #14
    Invité
    Invité(e)
    Par défaut
    Tu veux dire que si le fichier existe tu veux que le texte soit écrit à la fin du fichier plutôt que le fichier soit totalement écrasé ?

  15. #15
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 52
    Points
    52
    Par défaut
    oué c'est exactement ça

    parce que avant j'utilisé sa (mais vu kc'est pas sou forme de methode je peu pas utiliser le fichier comme je veux, d'ou mes question precedente pour les methodes.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    import java.io.*;
     
    public class LineCount{
         static public void main(String args[]) throws Exception {
     
    		//Change the directory where the count files are existing
    		File di   = new File("P:/m1/logiciel/Pizzaware/src");
    		File fl[] = di.listFiles();
    		int j;
    		int count=0;
    		int total=0;
    		String str="";
    		String totalinfo="";
    		String nbTotal="";
     
    		FileOutputStream file = new FileOutputStream("P:/one.txt",true); //append
    		PrintStream printtofile = new PrintStream(file);
     
     
    		for (j=0; j < fl.length; j++){
    			if (fl[j].isDirectory() )	{
    				printtofile.println("Repertoire");
    			}
    			else {
    			System.out.println(""+fl[j]);
    			FileInputStream fis = new FileInputStream(fl[j].getCanonicalFile());
    			LineNumberReader l = new LineNumberReader(new BufferedReader(new InputStreamReader(fis)));
    			while ((str=l.readLine())!=null){
    				count = l.getLineNumber();
     
    			}
     
    			total = total + count;
     
    		System.out.println(count);
     
     
    		String filename = fl[j].getName().toString();
    		totalinfo = filename+"-------------"+count;
     
     
    		printtofile.println(totalinfo);
     
    			}
    		}
    		nbTotal = "nombre de ligne total : " + total;
    		printtofile.println(nbTotal);
    		printtofile.close();
    		System.out.println(total);
    		file.close();
     
        }
     
    }

  16. #16
    Invité
    Invité(e)
    Par défaut
    Avec une recherche rapide sur google j'ai trouvé ça : http://java.developpez.com/faq/java/...FICHIER_append

    Par expérience je peux te dire que les FAQ de developpez.net concernant l'écriture/lecture de fichiers sont relativement complètes.

    Ici il te suffit de passer un booléen en paramètre du constructeur du FileWriter pour lui dire d'écrire à la fin du fichier sans écraser le reste.

Discussions similaires

  1. Créer une Macro qui transforme un fichier texte en fichier Excel
    Par Vanessa Utzinger dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/12/2014, 16h20
  2. Réponses: 0
    Dernier message: 15/11/2009, 17h31
  3. Réponses: 4
    Dernier message: 11/12/2007, 11h59
  4. Réponses: 1
    Dernier message: 22/09/2007, 20h31
  5. Réponses: 11
    Dernier message: 24/05/2007, 17h05

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