[java] lire un flux & mettre dans un fichier

karine -  
kij_82 Messages postés 4260 Statut Contributeur -
Bonjour,

je lis un flux d'octets et je voudrais le mettre dans un fichier.

Comment je peux faire ça en java ?

Merci beaucoup.
A voir également:

14 réponses

karine
 
Le premier lien je l'avais vu mais y a pas d'exemple, je comprends pas très bien .
Le deuxième lien, il est bien mais c'est des chaines de caracteres qui sont écrites dans le fichier et pas des octets.

A ce propos, comment je peux convertir des octets en chaine de caracteres ?

Merci
0
karine
 
Excuses-moi, j'aurais du essayer avant de parler.
Les octets sont bien dans le fichier maintenant.
Mais j'aimerais savoir comment on peut convertir des octets en texte.

J'ai cru voir qu'il n'existe pas de fonction comme ça en java mais qu'il faut en faire une.

Est-ce que quelqu'un en a déjà fait une de ce genre ?
Ou bien quelqu'un a-t-il une idée de comment la faire ?

Merci !!
0
maily Messages postés 7560 Statut Contributeur 453
 
texte? quel genre de texte? String?

String maChaine=new String(monTableauDOctets);
0
Luffy =) Messages postés 366 Statut Membre 110
 
A ce propos, comment je peux convertir des octets en chaine de caracteres ?

ben une chaine de caractères, c'est des octets nan ?
ex : "opopop" = 0x6F 0x70 0x6F 0x70 0x6F 0x70
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
karine
 
Quand tu dis

String maChaine=new String(monTableauDOctets);

ben moi les octets sonts dans un fichier maintenant et pas dans un tableau.

Mais j'ai l'impression q'1 truc cloche dans mon prog car beaucoup de texte ne represente que quelques octets.

Je sais pas si c'est normal.

Je vais essayer vos propositions.
0
Luffy =) Messages postés 366 Statut Membre 110
 
beaucoup de texte ne represente que quelques octets.

ben si tout va bien, on a un octet par lettre, soit 8 bits. enfin si c'est de l'ascii bien sur =)
0
karine
 
Salut !

En fait je ne veux pas que 1512 devienne "1512" mais je veux savoir ce que ça veut dire en "français".

Je vous donne pour exemple ce que contient mon fichier :
1512
1054
5792
21844

Et j'aimerais savoir ce que ça veut dire.
0
Luffy =) Messages postés 366 Statut Membre 110
 
???
ben c'est quoi ? de l'hexa ? dsl... comprends po....
0
karine
 
Voilà mon code, si ça peut t'aider à comprendre.

InputStream entrant = socket.getInputStream();
BufferedReader entrant3 = new BufferedReader(new InputStreamReader(socket.getInputStream()));

byte [] buffer = new byte[65536];
int lus;
boolean fini2 = false;
		
		
PrintWriter ecrivain =  new PrintWriter(new BufferedWriter (new FileWriter("monFichier.txt")));
while ((lus = entrant.read(buffer)) != -1) {	
			
			ecrivain.println(lus);
			
			sout.write(buffer,0,lus);
			
			       		
		}
		
		ecrivain.close();
0
kij_82 Messages postés 4260 Statut Contributeur 857
 
coucou !!

ouhou outpy g de nouveau internet !!

Ton petit prog la, il te sers juste à lire tout ce que contient un fichier, et à lécrire par tranche de 65536 octets.

++
0
karine
 
J'ai réfléchi pendant la nuit, et j'ai trouvé une façon plus claire de dire ce que je voudrais faire.

D'abord le code :
PrintStream sout = new PrintStream(client.getOutputStream());
InputStream entrant = socket.getInputStream();
		
byte [] buffer = new byte[4096];
int lus;
		
while ((lus = entrant.read(buffer)) != -1) {	
			
			sout.write(buffer,0,lus);
			       		
		}


Je voudrais que tout ce qui s'écrit dans sout s'écrive dans un fichier. C'est tout !

Ca a l'air simple mais moi je me prends la tete dessus depuis hier.

Avis aux amateurs !!
0
karine
 
Ayé j'ai REUSSI !!!

La nuit rend vraiment les idées plus claires.

Je donne la solution pour les prochain(e)s qui auront ce problème.
PrintStream sout = new PrintStream(client.getOutputStream());
InputStream entrant = socket.getInputStream();
	
byte [] buffer = new byte[4096];
int lus;
		
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("monFichier.txt"));
  
  
while ((lus = entrant.read(buffer)) != -1) {	
			
			
			sout.write(buffer,0,lus);
		
			bos.write(buffer, 0, lus);
			       		
		}
		bos.flush();
   		bos.close();


Bon ça a l'air facile comme ça mais pour moi c'était long à trouver ;-)
0
Luffy =) Messages postés 366 Statut Membre 110
 
Toutes mes Félicitations =)
0
kij_82 Messages postés 4260 Statut Contributeur 857
 
Comme quoi certains probleme viennent plus de la façon dont on les énonce...
0