Java : écrire dans un fichier

[Résolu/Fermé]
Signaler
Messages postés
18
Date d'inscription
jeudi 4 septembre 2003
Statut
Membre
Dernière intervention
14 avril 2005
-
Messages postés
1
Date d'inscription
mercredi 14 juin 2017
Statut
Membre
Dernière intervention
14 juin 2017
-
Bonjour !
Je souhaiterais écrire dans un fichier à partir d'une application Java.
Après avoir lu et parfois rien compris à des tas de tuto, je n'arrive toujours pas à gérer l'écriture dans un fichier de type .txt .
Quelqu'un n'aurait pas des explications avec exemple si possible, voire une méthode permettant d'écrire dans un fichier ??
Je dois rendre mon application demain !
MerKi de votre coup de pouce !!
GrEG

11 réponses

public void ecrire(String nomFic, String texte)
		{
			//on va chercher le chemin et le nom du fichier et on me tout ca dans un String
			String adressedufichier = System.getProperty("user.dir") + "/"+ nomFic;
		
			//on met try si jamais il y a une exception
			try
			{
				/**
				 * BufferedWriter a besoin d un FileWriter, 
				 * les 2 vont ensemble, on donne comme argument le nom du fichier
				 * true signifie qu on ajoute dans le fichier (append), on ne marque pas par dessus 
				 
				 */
				FileWriter fw = new FileWriter(adressedufichier, true);
				
				// le BufferedWriter output auquel on donne comme argument le FileWriter fw cree juste au dessus
				BufferedWriter output = new BufferedWriter(fw);
				
				//on marque dans le fichier ou plutot dans le BufferedWriter qui sert comme un tampon(stream)
				output.write(texte);
				//on peut utiliser plusieurs fois methode write
				
				output.flush();
				//ensuite flush envoie dans le fichier, ne pas oublier cette methode pour le BufferedWriter
				
				output.close();
				//et on le ferme
				System.out.println("fichier créé");
			}
			catch(IOException ioe){
				System.out.print("Erreur : ");
				ioe.printStackTrace();
				}

		}
77
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

merci, ça me sert énormement
Merci , ça me frustrais de ne pas y arriver.
Messages postés
1
Date d'inscription
mercredi 14 juin 2017
Statut
Membre
Dernière intervention
14 juin 2017

merci pour ces infos !!
Une class bien utile pour la lecture et écriture de données d'un fichier à un autre (en JAVA).

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Utilities {
	private static void writeFile(String fileContent, String filePathOutput) {
		try {

			// BufferedWriter a besoin d'un FileWriter, les 2 vont ensemble, on
			// donne comme argument le nom du fichier et false signifie qu'on
			// écrase le contenu du fichier et qu'on ne fait pas d'append sur le
			// contenu.
			FileWriter fileWriter = new FileWriter(filePathOutput, false);

			// Le BufferedWriter output auquel on donne comme argument le
			// fileWriter écrase le contenu déjà présent dans le fichier.
			BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

			// On écrit dans le fichier ou plutot dans le bufferedWriter qui
			// sert de tampon(stream)
			bufferedWriter.write(fileContent);

			bufferedWriter.flush();
			bufferedWriter.close();
			System.out.println("Fichier créé");
		} catch (IOException ioe) {
			System.err
					.println("Erreur levée de type IOException au niveau de la méthode "
							+ "writeFile(...) : ");
			ioe.printStackTrace();
		}
	}// End writeFile(...)

	public static void readFile(String filePathInput, String filePathOutput) {

		Scanner scanner = null;
		String line = null;
		StringBuffer str = new StringBuffer();
		try {
			scanner = new Scanner(new File(filePathInput));

			// On boucle sur chaque champ detecté
			while (scanner.hasNextLine()) {
				line = scanner.nextLine();

				if (line != null)
					str.append(line + "\r\n");
			}

			scanner.close();
		} catch (FileNotFoundException e) {
			System.err.println("Erreur levée de type FileNotFoundException"
					+ " au niveau de la méthode " + "readFile(...) : ");
			e.printStackTrace();
		}

		Utilities.writeFile(str.toString(), filePathOutput);
	}// End readFile(...)

	public static void formatSQLFileContentToIntegrateThisInTheJAVACode(
			String filePathInput, String filePathOutput) {

		Scanner scanner = null;
		String line = null;
		StringBuffer str = new StringBuffer();
		try {
			scanner = new Scanner(new File(filePathInput));

			// On boucle sur chaque champ detecté
			while (scanner.hasNextLine()) {
				line = scanner.nextLine();

				if (line != null)
					str.append(".append(\"" + line + " \")\r\n");
			}

			scanner.close();
		} catch (FileNotFoundException e) {
			System.err
					.println("Erreur levée de type FileNotFoundException"
							+ " au niveau de la méthode "
							+ "formatSQLFileContentToIntegrateThisInTheJAVACode(...) : ");
			e.printStackTrace();
		}

		Utilities.writeFile(str.toString(), filePathOutput);
	}// End formatSQLFileContentToIntegrateThisInTheJAVACode(...)
}// End public class Utilities
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
76
ça marche parfaitement.
il faut juste créer des instances de "Utilities" dans une class main et de jouer avec les fichiers.
Messages postés
38628
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
22 septembre 2021
2 000
Deux manières différentes de lire un fichier et une manière pour écrire un fichier (via le langage JAVA) :

package com.test;

import java.io.*;

public class A {

	public static void main(String[] args) {
		String pathFrom = "c:\\folderFrom\\jaros.jar";
		byte[] tab = lire1(pathFrom);

		String pathTo = "C:\\folderTo\\jaros.jar";
		ecrire(pathTo, tab);

		System.out.println("test");
	}

	public static byte[] lire1(String pathFrom) {
		// Lire le fichier
		byte[] tabReadData = null;
		File file = new File(pathFrom);

		try {
			FileInputStream fin = new FileInputStream(file);
			tabReadData = new byte[(int) file.length()];
			fin.read(tabReadData);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return tabReadData;
	}

	public static byte[] lire2(String pathFrom) {
		File file = new File(pathFrom);
		byte[] fileData = new byte[(int) file.length()];
		DataInputStream dis;
		try {
			dis = new DataInputStream(new FileInputStream(file));
			dis.readFully(fileData);
			dis.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return fileData;
	}

	public static void ecrire(String pathTo, byte[] tab) {
		try {
			FileOutputStream fos = new FileOutputStream(pathTo);
			fos.write(tab);
			fos.close();
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}
}

Bonjour,
Je viens un peu tard par rapport aux messages mais on ne sait jamais :)
Déjà merci beaucoup Aminata pour ta réponse, j'ai cherché pendant longtemps comment le faire mais je dois avouer que je ne comprenais pas grand chose je début en Java et j'ai un projet à faire pour mon BTS IG dans ce langage ^^"

Il y a juste un soucis, dans le texte que je souhaite sauvegarder, s'il y a des sauts de lignes, ils ne sont pas pris en compte lors de la sauvegarde, pourtant j'ai testé avec un System.out.println(monTexte); ça affichait bien le texte avec les sauts de lignes :S

Pourrais-tu m'aider?
Merci d'avance.
En ce qui concerne les sauts de ligne j'ai trouvé assez rapidement finalement, il suffisait de faire une boucle qui parcourait la chaine de caractères lettre par lettre et dès qu'il trouvait le code ASCII 10 ou 13 (pour le saut de ligne donc) il insérait un newLine.
Salut papillon
si tu récupères un String au lieu d'un int il faut faire ça :

int i=Integer.parseInt(s);

où s est le String récupéré dans le fichier.
Et là tu as stocké ton entier dans i.

Attention à être sûr que tu as un entier dans s, sinon tu vas
lever une exception Illegal Number Format Exception ou un truc comme ça.
avec un peu de code ça serait plus simple pour te répondre
Messages postés
148
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
19 août 2009
8
http://java.sun.com/j2se/1.4.2/docs/api/java/io/PrintWriter.html
http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileWriter.html
Messages postés
38628
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
22 septembre 2021
2 000
Salut

http://java.sun.com/docs/books/tutorial/essential/io/

Chouba,
Pochard d'assaut .. 
Messages postés
106
Date d'inscription
samedi 13 décembre 2008
Statut
Membre
Dernière intervention
12 janvier 2010
15
je veux ecrire une valeur entiere (int )dan un fichier mais le probléme je récupére pas la bonne valeur mais je récupére un code aul ieu d'une valuere entiere.