Comment ouvrir un fichier existant en écriture en Java ?

Comment ouvrir un fichier existant en écriture en Java ? - Programmation

Marsh Posté le 20-01-2001 à 12:21:59    

Ancien programmeur en C++, je me mets progressivement à la programmation java.
Et, je cales devant un problème d'ouverture de fichier (déjà existant) en écriture, sans qu'à chaque exécution, ce dernier soit recréé.
 
Merci d'avance.

Reply

Marsh Posté le 20-01-2001 à 12:21:59   

Reply

Marsh Posté le 20-01-2001 à 19:17:43    

Tu veux ouvrir quoi un fichier .txt par exemple et pouvoir le modifier ?

Reply

Marsh Posté le 20-01-2001 à 20:20:16    

Comment tu fais? Parce que c'est vraiment simple avec la classe File. Envoie ton code pour voir
 
S.

 

Reply

Marsh Posté le 20-01-2001 à 20:57:20    

Effectivement, c'est pour ouvrir un fichier .txt et, au final, écrire avec plusieurs threads dedans.
J'ai vu qu'il était possible de le faire en utilisant la classe FileOutputStream(String name, boolean append).
 
Par contre en n'utilisant que la classe File, j'aimerais bien qu'on m'explique.
 
Merci.

Reply

Marsh Posté le 21-01-2001 à 00:44:08    

FileInputStream fluxIn=new FileInputStream("fichier.txt" );
InputStreamReader readFluxIn=new InputStreamReader(fluxIn);
BufferedReader buffFluxIn=new BufferedReader(readFluxIn);
 
try
{
ssString str=buffFluxIn.readLine();
//etc..
}

Reply

Marsh Posté le 21-01-2001 à 12:13:16    

Hum... ouais... merci pour ta réponse Roswell_, mais ce n'est pas une ouverture en lecture que je voulais, mais en écriture (pour un fichier déjà existant et que je ne veux pas écraser).
 
Toutefois dans ton exemple, quel est l'intérêt de passer par un BufferedReader ? ne peut-on pas se contenter du FileInputStream ?
 
Merci qu'en même.

Reply

Marsh Posté le 21-01-2001 à 13:42:03    

Roswell te donne un exemple qui est 100% correct. Il te suffit simplement de remplacer Input par Output. J'aimerai avoir ton code parce que je n'arrive toujours pas à comprendre comment tu fais pour écraser (créer) un fichier qui existe déjà!
 
Quand au buffer, c'est une couche supplémentaire qui permet d'améliorer les performances. Voici donc l'exemple pour l'écriture:
 
FileOutputStream fluxOut=new FileOutputtStream("fichier.txt" );ss
OutputStreamReader readFluxOut=new OutputStreamReader(fluxOut);ss
BufferedWriter buffFluxOut=new BufferedWriter(readFluxOut);ss
tryss
{ss
ss//etc..ss
}
 
Allez sans rancune, Mister C++

 

Reply

Marsh Posté le 21-01-2001 à 15:04:20    

Je ne remets pas en cause l'exemple de Roswell, qui fonctionne très bien, par contre, je viens de tester ton code darklord, moyennant des p'tites modifs (Désolé pour l'indentation) :
 
import java.io.*;
import java.util.*;
 
public class Test
{
public static void main(String[] args)
{
tryss
{ss
FileOutputStream fluxOut=new FileOutputStream"fichier.txt" );ss
OutputStreamWriter readFluxOut=new OutputStreamWriterfluxOut);ss
BufferedWriter buffFluxOut=new BufferedWriter(readFluxOut);ssss
buffFluxOut.write("La petite maison dans la prairie" );ss buffFluxOut.close();
readFluxOut.close();
fluxOut.close();
}
catch (IOException ioe)
{
System.out.println("Message : "+ioe.getMessage());
}
}
}
 
Et là, tu constateras comme moi que 2 exécutions d'à filer, ne permettent pas d'écrire à la suite du fichier.
 
Je n'ai malheureusement plus le code exact, vu que je travaille dans le même fichier, mais ça ressemblait à cela sans passer par un buffer.
 
Je te donne un extrait de mon code actuel, et qui fonctionne :
 
import java.io.*;
import java.util.*;
 
public class Test
{
public static void main(String[] args)
{
tryss
{ss
FileWriter fw=new FileWriter("fichier.txt",true);
fw.write("La petite maison dans la prairie" );
fw.close();
}
catch (IOException ioe)
{
System.out.println("Message : "+ioe.getMessage());
}
}
}
 
Je cherchais juste à résoudre mon problème, c'est tout.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed