Com esse código eu consigo importar o arquivo…porem ele vem todo o conteudo, funciona para textos curtos, por isso eu preciso usar um buffer ou entao ler linha a linha…como posso fazer isso??
InputStream input = getClass().getResourceAsStream("Exportacao Produtos.txt");
String str;
try {
InputStreamReader inR = new InputStreamReader(input);
byte[] b = new byte[1024];
int length = input.read(b, 0, 1024);
txt.setString(new String(b, 0, length));
} catch (IOException ex) {
ex.printStackTrace();
}
Bem amigo primeiramente se vc for upar isso para um TextBox que é o mais adequado para mostrar… vc deve aumentar o Buffer dele dependendo de quantos KB’s vc irá passar…
Vc pode fazer isso dessa maneira:
int tamanho = 20000;
textBox.setMaxSize(tamanho);
Onde textBox é um objeto instanciado de TextBox e setMaxSize é o tamanho máximo de buffer. 20000 daria aproximadamente 20KB para texto.
Faça um for ou um while com incrementação para ler seu arquivo da posição inicial até .getLenght() , geralmente quando vc realiza a conexão via Http ele já sabe mais ou menos o tamanho do .txt que vc irá baixar. É só vc pegar o tamanho máximo da conexão…
con.getLenght();
Onde con é a conexão que vc realizou via HttpConnection com o Servlet.
Geralmente quando vc esta fazendo um download via celular para o Cliente não achar que a aplicação travou, vale apena colocar um Gauge não interativo e incrementar ele via um while, quando vc pega no laço 1 KB vc aumenta 1 do Gauge, fazendo que seu maxValue seja o .getLenght() ou seja o tamanho total do arquivo.
Vale resaltar duas coisas:
Quando uma conexão Http é bem sucedida ela retorna uma constante HTTP_OK que vc pode explorar com if’s para baixar e com elses para mostrar exceções.
E a conexão deve ter uma thread para baixar o arquivo se não a interface gráfica corre o risco de travar na hora da execução da conexão.
Espero que essas dicas tenham te ajudado amigo… até mais!