codice:
class stream{
   public static void main(String[] args){
            BufferedInputStream bis=new BufferedInputStream(System.in);
            BufferedOutputStream bos=new BufferedOutputStream(System.out);
            
            DataInputStream dis=new DataInputStream(bis);
            DataOutputStream dos=new DataOutputStream(bos);
            
            int dim=5;
            byte[] b=new byte[dim];
            int n;
            String stringa=new String();
            
            try{
                
                 System.out.print("Inserisci stringa: ");
                //dis.readLine();
                stringa=dis.readLine();
                System.out.println(stringa);
                
                System.out.print("SCRIVI QUALCOSA(EOF per uscire dal while):");
                
                while((n=dis.read())!=-1){
                    dos.write(n);
                    //bos.println(n) non lo prende??
                    bos.flush();
                }
                
                System.out.print("Inserire dati nel buffer: ");
                dis.readFully(b, 0, dim);
                
                System.out.print("buffer riempito fino a " + dim + " caratteri con readFully: ");
                dos.write(b);
                
                bos.flush();
                
            }
            catch(Exception e){
                System.out.println(e);
            }
            finally{/*niente*/}
            /*--------------------------------------------------------------*/
    }
}
penso di fare un po di confusione con le flush credo perche se sposto il primo "inserisci stringa(le 4 righe), alla fine, cioè dopo l'ultima flush, non funziona. O meglio funziona solo se decommento la dis.readLine(). qualche idea? grazie anticipatamente

ps: le flush le devo chiamare sul buffered output stream o sul data output stream?