Bonjour,
J'ai une thread qui lit quelque chose jusqu'à ce qu'elle atteigne la fin du flux ou par demande d'une autre thread via une variable volatile (interrupt).
Je ne peux rien faire tant qu'elle est dans la méthode read(). Alors j'ai essayé a méthode available(), mais elle renvoie toujours 0 en fin de flux (dans mon cas control-D sous GNU/Linux).
Voilà mon code actuel:
Code :
- InputStream in = getInputStream();
- OutputStream out = getOutputStream();
-
- byte data[] = new byte[BUFFER_SIZE];
- int length = 0;
- try
- {
- TEST : for(;;)
- {
- while(in.available() == 0)
- {
- if(interrupt == true)
- break TEST;
// demande d'arrêt de la thread
- }
- if((length = in.read(data)) != -1)
- out.write(data, 0, length);
- else
- break; // atteinte de la fin du flux de lecture
- }
- }
- catch(IOException e)
- {
- System.err.println("I/O error" );
- }
|
Merci d'avance pour votre aide.
PS: J'ai édité plusieurs fois mon post pour le rendre plus clair. Désolé pour ceux qui sont passés avant.
[jfdsdjhfuetppo]--Message édité par Krueger--[/jfdsdjhfuetppo]