[Java] Problème lors de transfert de fichiers (pourrissage)

Problème lors de transfert de fichiers (pourrissage) [Java] - Programmation

Marsh Posté le 29-05-2001 à 12:56:49    

Re !
Désolé d'encore vous déranger
J'ai encore et toujours un chti prob lors du transfert de fichier
En effet, pour les fichiers textes ça marche nickel mais il reste deux problèmes
1°) Il envoie tout par paquet de 2Ko ce qui n'est pas génant mais même le dernier paquet fait 2Ko (même si fait moins, dans ce cas, il le gonfle de je ne sais quoi)
2°) Pour le transfert de fichiers doc ou bmp (ou autres je suppose) ben le fichier est bien parti, bien arrivé (avec qqes octets de plus pour la raison 1°) mais il est tout pourri à l'arrivé (ex pour un doc, plus de mise en page, texte lisible mais certains caractères transformés... :pt1cable: )
Enfin bref, c'est pas encore ça
 
Une idée ?
Thanx

Reply

Marsh Posté le 29-05-2001 à 12:56:49   

Reply

Marsh Posté le 29-05-2001 à 13:09:47    

fait du transfert en binary mode... et pas en char....
regarde les classes OutputStream et InputStream.. je sais plus trop les noms exacts mais c dans la doc tout ca...
Output => fichier ou tu ecris (la destination)
Input => fichier ou tu lis (le source)


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 29-05-2001 à 13:13:33    

On travaille déjà en octets avec OutputStream et InputStream
On ne travaille pas en char
mais le prob vient pas vraiment de là apparement
 
Une autre idée ?
et sinon concernant le fait que le dernier paquet est gonflé ???

Reply

Marsh Posté le 29-05-2001 à 13:15:48    

pour le dernier paquet... c simple... tu ecrit uniquement le nombre d'octets ke ta lu... ce nombre est normalement retournée par la methode de lecture...
Ca se fait en general dans ta boucle du parcours de lecture du fichier, au moment ou tu fais ton test de reussite de la lecture...


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 29-05-2001 à 13:19:15    

Euh.. pour ce ki est des output et input... c pas de loctet automatiquement.. ca depend de kelle sous classe tu utilise...
Je te conseille de prendre le FileOutputStream et FileInputStream..


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 29-05-2001 à 13:23:34    

Apparement c'est bien ce qu'on fait
On va remater ça
Thanx   :love:

Reply

Marsh Posté le 29-05-2001 à 13:29:47    

utilise un buffer
 
Je te donnes un ex avec une copie d'un fichier
 
tu déclares la taille de ton buffer
public final static int TAILLE_BUFFER = 512;
 
 
BufferedInputStream bufferedINS = new BufferedInputStream(new FileInputStream(fichierSource));
BufferedOutputStream bufferedOUTS = new BufferedOutputStream(new FileOutputStream(fichierDestination));
 
byte buffer[] = new byte[TAILLE_BUFFER];
int taille = 0;
// taille te donne le nb d'octets à lire sans avoir de conneries à la fin de tes fichiers.
while ((taille = bufferedINS.read(buffer, 0, buffer.length)) > -1)
{
 bufferedOUTS.write(buffer, 0, taille);
}

Reply

Marsh Posté le 30-05-2001 à 12:07:20    

:cry:  HEEEEEELPPP !!!!!   :cry:  
 
on a déjà un équivalent de ce code
mais en fait, on cherche le cas d'arret
ton tableau, pour le dernier paquet, c'est quoi le cas d'arret ?
je veux dire de quoi il le remplit ?
comment faire un test genre si case_vide alors stop quoi
en gros, la question c'est "une case vide c'est quoi ?"
buffer[i] = NULL ? on dirait pas
 
je vais devenir fou  :pt1cable:

Reply

Marsh Posté le 30-05-2001 à 12:42:06    

c ca sa condition d'arret :

Code :
  1. ((taille = bufferedINS.read(buffer, 0, buffer.length)) > -1)


:D:D


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 30-05-2001 à 12:43:35    

en fait, si la lecture echoue, la valeur -1 est retournee et donc la condition est verifiée... Mais moi jaurai mis zero...


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Sujets relatifs:

Leave a Replay

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