Imprimir um arquivo na impressora default

Oi pessoal!

Bom , encontrei um codigo muito legal para impressao na impresora padrao do sistema, mas ainda estou com uma duvida e tenho certeza q vcs vao me ajudar como sempre:

No codigo a seguir , como eu imprimo um arquivo de texto ao invez de uma string ? E como faco isso sem controlar o salto d paginas ??

package testes;

import javax.print.;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.StringTokenizer;
import java.io.
;

// Essa classe é a responsavel pela impressao. Ela detecta a impressora
// instalada, recebe o texto e o imprime.
public class Impressao {

 // variavel estatica porque será utilizada por inumeras threads
 private static PrintService impressora;

 public Impressao() {

     detectaImpressoras();

 }

 // O metodo verifica se existe impressora conectada e a
 // define como padrao.
 public void detectaImpressoras() {

     try {

         DocFlavor df = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
         PrintService[] ps = PrintServiceLookup.lookupPrintServices(df, null);
         for (PrintService p: ps) {

             System.out.println("Impressora encontrada: " + p.getName());
             
              impressora = p ;
             p.createPrintJob () ;
             if (p.getName().contains("Text") || p.getName().contains("Generic"))  {

                System.out.println("Impressora Selecionada: " + p.getName());
                 impressora = p;
                 break;

             }

         }

     } catch (Exception e) {

         e.printStackTrace();

     }

 }

 public synchronized boolean imprime(String texto) {

     // se nao existir impressora, entao avisa usuario
     // senao imprime texto
     if (impressora == null) {

         String msg = "Nennhuma impressora foi encontrada. Instale uma impressora padrão \r\n(Generic Text Only) e reinicie o programa.";
       	System.out.println(msg);

     } else {

         try {
             
             
             
             DocPrintJob dpj = impressora.createPrintJob();
                           
             InputStream stream = new ByteArrayInputStream(texto.getBytes()); 
             DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
             Doc doc = new SimpleDoc(stream, flavor, null);                                      
             dpj.print(doc, null);                 
             return true;

         } catch (PrintException e) {

             e.printStackTrace();

         }

     }

     return false;

 }

}

Desde ja , muitissimo obrigado a todos !

Cara, eu acho que é mais ou menos isso:

    /**
     * Imprime o conteudo de um arquivo de texto.
     */
    public synchronized boolean imprime(File arquivo) throws
            FileNotFoundException, IOException {
        
        InputStream is = new FileInputStream(arquivo);
        StringBuffer sb = new StringBuffer();
        
        byte b = -1;
        do {
            b = (byte) is.read();
            sb.append((char) b);
        } while (b != -1);
            
        String texto = sb.toString();
        return imprime(texto);
    }

sobregravando seu método.

Agora, para controlar saltos de páginas, preciso dar mais uma pesquisada.
Valeu peolo código cara, funciona. Só que minha impressora (HP deskjet 656C) trava logo no começo, ai eu aperto uma vez o botão liga/desliga e ela começa imprimir. Mas valeu masmo !!!

Blza , Vlw pela sua ajuda tb …

Eu ja consegui imprimir um arquivo , se precisar tamo ai …rs

vc conseguiu imprimir com o codigo acima? se possivel posta o codigo para me poder dar uma olhada…falow…"!!!