Aspetta ancora un attimino.
Ho provato ad utilizzare anche available su un piccolo esempio
e funziona egregiamente.

codice:
import java.io.*;

public class StampaFile {

        // il file da leggere e stampare
        String file;

        public StampaFile(String filename) {
                this.setFile(filename);
        }

        public void setFile(String filename) {
                file = filename;
        }

        public void stampa() {
                try {
                        FileInputStream fis = new FileInputStream(file);
                        BufferedInputStream bis = new BufferedInputStream(fis);
                        int i;
                        //while ( (i = bis.read()) != -1 ) {
                        while (bis.available() > 0) {
                                i = bis.read();
                                System.out.print("" + (char)i);
                        }
                        bis.close();
                } catch (IOException e) {
                        System.out.println("Message: " + e.getLocalizedMessage());
                }
        }

        public static void main(String[] args) {
                new StampaFile(args[0]).stampa();
        }
}
Lo lancio dandogli in pasto un file di testo, ad esempio
il sorgente di questa classe.

Provalo, vedi se ti può interessare, dopodichè cura la
tua servlet.

Ciao.