[java] sauvegarder flux et inputStream

Fermé
karine - 26 mai 2005 à 14:25
 pseudo??? - 29 avril 2011 à 11:25
Bonjour,

j'ai besoin d'aide !
Les flux java vont me rendre folle!

Je vous raconte toute l'histoire.
J'ai une classe Interpreteur qui lit un flux InputStreamReader.

En même temps que je lis ce flux, je voudrais le sauvegarder dans quelque chose (là je sais pas quoi). Mais il faudrait ensuite que ce quelque chose soit transformable en InputStream ou en DataInputStream pour que mon autre classe puisse l'utiliser.

J'espère que j'ai été claire, et surtout que quelqu'un va pouvoir m'aider.

Je vous remercie tous et toutes d'avance !
(Ca fait du bien de raconter ses problèmes ;-) )
A voir également:

15 réponses

Resalut jerome !

FileInputStream fw;
DataInputStream fromWebBin;

InputStream fluxx = (InputStream)fw;
	
fromWebBin = new DataInputStream(fluxx);


Je fais ça et ça a pas l'air de marcher, j'ai une erreur java.lang.NullPointerException quand je fais un readLine sur fromWebBin. Comme si il était vide.

Tu es sur qu'on peut caster en InputStream comme ça ?
Est-ce que tu vois d'où viens l'erreur?

merci!
1
Il n'y a personne qui s'y connait en flux java ?

En tout cas merci à la personne qui m'aidera.
0
shako95 Messages postés 64 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 29 juin 2005 5
26 mai 2005 à 15:47
Non je m'y connais pas.
De rien d'avoir répondu ^^

ps: ahhh l espoir qui nait en voyant 1 message de plus à son topic...
0
Comme on dit, c'est l'intention qui compte ;-D

Mais plus sérieusement, je suis un peu désespérée avec ce problème depuis une semaine.

Si quelqu'un a une petite idée, ça me ferait bien plaisir!
0
Je fais remonter le topic, car je n'ai toujours pas trouvé de solution.

Et je m'en irai pas sans la solution! ;-D

MERCI !!
0

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

Posez votre question
shako95 Messages postés 64 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 29 juin 2005 5
30 mai 2005 à 09:47
Laches une photo de toi et jte dirai la solution :D

nan jy connais rien en java.. jte plains, jdéteste quand on répond pas à mon message lol

En tout cas dés que tu verras mon pseudo, esperes pas que c est pour t aider!
0
Méfies-toi !

Je connais des mecs qui prennent des pseudo de filles espérant que ça attirera le "geek" :-D

Qui sait, si ça se trouve je m'appelle Roberto et je pèse 120 kg !

Sinon, je rappelle que ce topic n'est pas une blague !
Je cherche vraiment une solution ;-)
0
shako95 Messages postés 64 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 29 juin 2005 5
30 mai 2005 à 10:01
lol je compte pas te draguer, mais javoue que ton pseudo serait roger jpasserai pas le temps en postant sur ton topic =)

Maintenant tu peux lacher l affaire, je l ai pourri ton topic mdr

Bonne chance !
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
30 mai 2005 à 10:01
Je ne suis pas programmeur Java (mais plutot VB), mais peut etre mon conseil pourra t'aider,
tu pourra créer une classe dérivée de InputStream (appelons la "InputOutputStream") à la quelle tu ajoute une méthode Write pour "ecrire" dedans (dans le buffer qui servira par la suite à la lecture), puis tu utilise cette classe à la place de tes InputStream, ainsi, quand tu as un résultat tu l'ecrit dans un "InputOutputStream" au lieu du "InputStream".
un site sur java, qui pourra peut etre t'aider:

http://www.kickjava.com/?http://www.kickjava.com/753.htm

bonne chance, dans la suite, chui toujours là si je peut t'aider,
sur ce, @*
0
Merci sam3000 !

Je vais essayer tout ça, je te tiens au courant.

A+
0
jebok Messages postés 358 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 23 octobre 2007 51
30 mai 2005 à 11:38
Et pourquoi tu n'écrirais pas ton flux dans un fichier "flux.txt" par exemple en faisant :

File destination = new File("flux.txt");
destination.createNewFile();
FileOutputStream destinationFile = new FileOutputStream(destination);
/** taille des segments de fichier lus = 0.5Mo */
		byte buffer[]=new byte[512*1024];
        int nbLecture;
        
        /** tant que le flux d'entrée contient des données */
        while( (nbLecture = in.read(buffer)) != -1 ) {
         	/** on écrit ces données dans le fichier de destination via 
         	 * le flux de sortie */
         	destinationFile.write(buffer, 0, nbLecture);
        }


in est ton flux entrant que tu veux sauvegarder.

Et lorsque tu as besoin de lire ce qui est dans le fichier, tu fais :
InputStreamReader ins = new InputStreamReader("flux.txt");

0
Merci beaucoup jebok !

Ta solution m'as l'air pas mal du tout. C'est vrai que le fichier ça ralentit un peu mais si ça marche, c'est déjà ça !

Est-ce que tu sais comment je peux transformer le InputStreamReader en InputStream ? Car c'est ce que je veux en retour.
0
jebok Messages postés 358 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 23 octobre 2007 51
30 mai 2005 à 11:53
A la place de la derniere ligne InputStreamreader ins =...
tu n'as qu'à écrire ceci :

InputStream fluxFinal = new InputStream("flux.txt");


on peut transformer un InputStream en InputStreamReader mais pas l'inverse je crois.
De toute manière, InputStream est abstract contrairement à InputStreamReader
0
jebok Messages postés 358 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 23 octobre 2007 51
30 mai 2005 à 12:11
En fait, InputStream ne possède pas de constructeur permettant d'introduire un argument.
Il faut donc écrire ceci :
FileInputStream fluxFinal = new FileInputStream("flux.txt");

et ensuite lorsque tu souhaites utiliser ton flux en tant que InputStream, il te suffit de le caster :

InputStream fluxx = (InputStream)fluxFinal;

En espérant t'avoir aidé,
jerome
0
En fait c'était bon, j'avais oublié d'instancier fw.

Merci beaucoup jerome !!
0
profiler_21 Messages postés 6 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 13 janvier 2006 1
31 mai 2005 à 13:50
eh beh miss karine je vois que ta du succes sur ccm y a meme des gens qui te drague balo.
donc pour repondre a ta question, ecrire sur un fichier voici les lignes de code qui te permetent de le fair:

ObjetOutputStream s=new ObjetOutputStream(new(FileOutputStream("karine.txt"));
s.writeObject("today");//ecrire une chaine de caract sur le fichier.
s.writeObject(new Date());//Date() peut etre un tablo, une classe......

Lire dans fichier:

ObjetInputStream s=new ObjetInputStream(new(FileInputStream("karine.txt"));
String chaine=(String) s.readObject();// il faut tjrs definir lobjet que tu li dans le fichier dans lexemple g di que ct un string.
Date date= (Date) s.readObject();


j espere que c ptite ligne te serviron a kelke chose.
ciao
0
un lien pas mal qui explique les stream en java
http://www.netline.be/presse/inside_internet/java5.htm
0
Y a aussi un site qui peut t'aider :
http://www.jmdoudoux.fr/java/dej/chap-serialisation.htm
0