Essk écrire ds 1 fichier change le format ?

karine -  
Luffy =) Messages postés 366 Statut Membre -
Bonjour,

Voila mon probleme :
Quand j'envoie un flux de données à un client Web, la page Web s'affiche normalement.

Si je mets ce flux dans un fichier et que j'envoie par la suite ce que contient le fichier au client, la page s'affiche mal.

Est-ce que quelqu'un sait si le fait d'écrire/lire dans un fichier modifie le format des données ou un truc de ce genre ?

Merci
A voir également:

11 réponses

Luffy =) Messages postés 366 Statut Membre 110
 
Ben normalement ça ne devrait pas, ce ne sont que des caractères. c'est quand même bizarre ton truc...

Au fait, j'ai pas tout suivi dans ton histoire de routeur, ptêt que tu t'es déjà justifiée, mais pourquoi as-tu besoin d'écrire dans un fichier avant de l'envoyer ?
0
karine
 
Pour l'instant ça ne sert à rien mais après je vais faire un traitement sur le texte (du matchage) et il faut donc que ça soit dans un fichier.

En fait je lis octet par octet le flux que je mets dans le fichier et pareil pour la lecture (octet par octet).

Il doit pourtant bien y avoir quelque chose de changé puisque sans passer par le fichier, les pages sont Web s'affichent bien.

Qu'est-ce que ça pourrait etre ?
0
Luffy =) Messages postés 366 Statut Membre 110
 
euh... du matchage, c'est quoi ?
0
karine
 
Je voulais dire que je fais un match, je cherche une chaine de caractere dans le fichier.

exemple :
String regex = "bon";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher("un bon sandwich");

je cherche "bon" dans "un bon sandwich";
0
Luffy =) Messages postés 366 Statut Membre 110
 
oki :-)

ceci dit, ça me donne faim ton sandwich...
0
kij_82 Messages postés 4260 Statut Contributeur 857 > Luffy =) Messages postés 366 Statut Membre
 
Ben pour moi ce sera un Parisien ;)
0

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

Posez votre question
kij_82 Messages postés 4260 Statut Contributeur 857
 
peut etre un simple :
<?php

$val = "chaine_a_trouver";
$var = "dans cette chaine, touver la chaine_a_trouver est facile";
 if( ereg($val, $var, $tab ) )
   echo "c bon la chaine est trouvée<BR>";
else
  echo "chaine non trouvée";

?>


peut aller pour ce que tu a a faire ?

++
0
Luffy =) Messages postés 366 Statut Membre 110
 
Peut-être... mais je crois que notre amie Karine code en java.

donc..... Traduction !

PS : le parisien, tu l'auras qu'en journal !!!
0
kij_82 Messages postés 4260 Statut Contributeur 857
 
j'me disais aussi que ca resseblais pas à du PHP...

En java, l'équivalent est ...

tintintin...

... je ne sais pas mais je vais chercher. A froid la je dirais que c'est presque la même chose en fait.
0
kij_82 Messages postés 4260 Statut Contributeur 857
 
Et ceci, est ce que ca marche ?
String chaine = " blabla coucou je suis la ";
$a_trouver = "coucou";
if( chaine.matches($a_trouver) )
  System.out.println("chaine trouvée");
else
  System.out.println("Chaine non trouvée");
0
Nashouille
 
J'ai peut-être pas bien compris mais ce n'est pas l'algorithme de matchage (vraiment joli mot ^^) qui pose problème.
Si les caractères dans le fichiers ne sont pas bon le problème se siterait plutot au niveau de la copie.
Tu utilises quoi pour faire la copie octet par octet?

Quand tu affiches le fichier a la fin quels sont les changements?
0
karine
 
Salut !

Je vous donne le code quand je lis et quand j'écris dans le fichier :
PrintStream sout = new PrintStream(client.getOutputStream());
InputStream entrant = socket.getInputStream();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("monFichier.txt"));
System.out.println("Lecture de la réponse du serveur ...");
		
byte [] buffer = new byte[4096];
int lus;
String ligne = "";
			
// on lit byte par byte la réponse du serveur Web et on la met dans monFichier.txt
while ((lus = entrant.read(buffer)) != -1) {	
			
bos.write(buffer, 0, lus);
}
		
bos.close();


//lecture du fichier
FileInputStream lire = new FileInputStream ("monFichier.txt");
		
int octet;
byte [] buffer2 = new byte[4096];
String resultat = "";
		
while ((octet = lire.read(buffer2)) != -1) {
		
sout.write(buffer2,0,octet);
			
}
		
		
lire.close();


Le résultat, c'est que les pages Web ne s'affichent pas correctement. Alors que si j'envoie la réponse du serveur sans passer par un fichier, ça passe nickel.

Des fois j'ai vu qu'il y avait un 0 rajouté à la fin du code, est-ce que ça pourrait venir de là ?

Autre question : est-ce que je peux matcher directement le flux ?

Merci
0
Luffy =) Messages postés 366 Statut Membre 110
 
Pour le 0, il est utilisé pour indiqué la fin d'une chaine de caractères. Mais attention, ce n'est pas le "0", mais 0.
exemple dans ta chaine tu as :
1 2 3 4 5 6 7 8 (numéro d'octet)
o p o p 0 o p !

eh bien si tu l'affiches ou tu l'écris dans un fichier, ce ne sera que "opop".
Donc je ne pense pas que ton problème vienne de là.
0