Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thomas Luyt
bonsoir
voila le code en question : public void returnFile(String Filename, OutputStream out) throws FileNotFoundException, IOException { //un FileInputStream est pour les octets FileInputStream fis = null; try { fis = new FileInputStream(Filename); //un buffer de 64 Kilo-Octets byte[] buf = new byte[64000]; int bytesRead; while ((bytesRead = fis.read(buf)) > 0)
ici je pense qu'il vaut mieux tester sur fis.read(buf) != -1, -1 correspondant à la fin du flux.
[...]
Cette erreur apparait lorsque l on arrive à la fin du fichier cad lorsque bytesRead est inférieur à buf.
quelqu un aurait-il une idee de la provenance de cette erreur ?
je pense que tu dimensionnes mal ton buffer. Un tampon de 4096 octets (4 kilo octets) devrait largement suffire. J'ai utilisé avec profit les exemples donnés dans l'article suivant http://www.onjava.com/pub/a/onjava/excerpt/jebp_3/index1.html?page=2 (et ses suites), en particulier pour créer une servlet forçant le téléchargement de fichiers. En conservant la taille de buffer de 4 Ko, ça fonctionne très bien même avec des gros fichiers (900 Ko et +)
Merci d avance pour votre aide.
Michel.
-- Thomas
bonsoir
voila le code en question :
public void returnFile(String Filename, OutputStream out)
throws FileNotFoundException, IOException {
//un FileInputStream est pour les octets
FileInputStream fis = null;
try {
fis = new FileInputStream(Filename);
//un buffer de 64 Kilo-Octets
byte[] buf = new byte[64000];
int bytesRead;
while ((bytesRead = fis.read(buf)) > 0)
ici je pense qu'il vaut mieux tester sur fis.read(buf) != -1, -1
correspondant à la fin du flux.
[...]
Cette erreur apparait lorsque l on arrive à la fin du fichier cad
lorsque bytesRead est inférieur à buf.
quelqu un aurait-il une idee de la provenance de cette erreur ?
je pense que tu dimensionnes mal ton buffer.
Un tampon de 4096 octets (4 kilo octets) devrait largement suffire.
J'ai utilisé avec profit les exemples donnés dans l'article suivant
http://www.onjava.com/pub/a/onjava/excerpt/jebp_3/index1.html?page=2 (et
ses suites), en particulier pour créer une servlet forçant le
téléchargement de fichiers. En conservant la taille de buffer de 4 Ko,
ça fonctionne très bien même avec des gros fichiers (900 Ko et +)
voila le code en question : public void returnFile(String Filename, OutputStream out) throws FileNotFoundException, IOException { //un FileInputStream est pour les octets FileInputStream fis = null; try { fis = new FileInputStream(Filename); //un buffer de 64 Kilo-Octets byte[] buf = new byte[64000]; int bytesRead; while ((bytesRead = fis.read(buf)) > 0)
ici je pense qu'il vaut mieux tester sur fis.read(buf) != -1, -1 correspondant à la fin du flux.
[...]
Cette erreur apparait lorsque l on arrive à la fin du fichier cad lorsque bytesRead est inférieur à buf.
quelqu un aurait-il une idee de la provenance de cette erreur ?
je pense que tu dimensionnes mal ton buffer. Un tampon de 4096 octets (4 kilo octets) devrait largement suffire. J'ai utilisé avec profit les exemples donnés dans l'article suivant http://www.onjava.com/pub/a/onjava/excerpt/jebp_3/index1.html?page=2 (et ses suites), en particulier pour créer une servlet forçant le téléchargement de fichiers. En conservant la taille de buffer de 4 Ko, ça fonctionne très bien même avec des gros fichiers (900 Ko et +)