CommentCaMarche
Recherche
Posez votre question Signaler

Java : écrire dans un fichier [Résolu]

otis182 18Messages postés jeudi 4 septembre 2003Date d'inscription 14 avril 2005Dernière intervention - Dernière réponse le 6 juil. 2013 à 18:27
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
Lire la suite 
Réponse
+69
moins plus
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();
				}

		}
feriel- 25 mai 2012 à 16:13
merci , a vous
Répondre
alibaba- 11 juil. 2012 à 16:04
merci, ça me sert énormement
Répondre
G1BB- 6 juil. 2013 à 18:27
Merci , ça me frustrais de ne pas y arriver.
Répondre
Ajouter un commentaire
Réponse
+12
moins plus
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
walidovich_85 623Messages postés mardi 12 janvier 2010Date d'inscription 30 septembre 2014Dernière intervention - 22 oct. 2012 à 17:58
ça marche parfaitement.
il faut juste créer des instances de "Utilities" dans une class main et de jouer avec les fichiers.
Répondre
Ajouter un commentaire
Réponse
+8
moins plus
http://perso.wanadoo.fr/jm.doudoux/java/tutorial/chap019.htm#chap_19

Chouba,
Pochard d'assaut .. 
Ajouter un commentaire
Réponse
+4
moins plus
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.
Ajouter un commentaire
Réponse
+4
moins plus
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();
		}
	}
}

Ajouter un commentaire
Réponse
+3
moins plus
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.
Ajouter un commentaire
Réponse
+1
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
avec un peu de code ça serait plus simple pour te répondre
Ajouter un commentaire
Réponse
+0
moins plus
Ajouter un commentaire
Réponse
-1
moins plus
Salut

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

Chouba,
Pochard d'assaut .. 
Ajouter un commentaire
Réponse
-2
moins plus
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.
Ajouter un commentaire
Ce document intitulé «  Java : écrire dans un fichier  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.