Ler uma linha la no meio do .txt

7 respostas
maior_abandonado

pessoal, eu to com uma classe aqui, que recebe uma URL, joga ela num InputStreamReader que por sua vez num BufferedReader…

resumindo eu tenho uma pagina html e leio o codigo fonte dela a partir do BufferedReader…

essa pagina se trata de um log de uma impressora daki interna (eu acesso com um ip da rede interna na URL…)

a questão é: eu preciso ler uma linha la no meio do arquivo, no meu caso a linha 195, e do dando readLine em um loop até chegar nessa linha (perdendo tempo lendo 194 linhas a toa).

tem algum jeito, algum metodo, alguma outra classe de leitura de streams que me permita ir direto a uma linha X no meio do texto, sem precisar ler as anteriores primero?

7 Respostas

W

Cara nao sei se eh mais rapido. Mas tem apache.commons.io tem uma classe muito boa pra trabalhar do jeito que vc quer, olha um codigo que eu fiz de exemplo :

import org.apache.commons.io.*;
import java.io.*;
import java.util.*;

public class FileTest {

	public static void main(String[] args) { 
		
		try { 
							
			List lista = FileUtils.readLines(new File("teste.txt"));
			
                        // imprime um item especifico da lista (linha 3 do arquivo)
			System.out.println(lista.get(2));
			
                        // percorre todos os itens da lista.

			for(Iterator i = lista.iterator(); i.hasNext();) { 
				System.out.println(i.next());
			}
			
		} catch (Exception e) { 
			e.printStackTrace();
		}
		
	}
	
	
}

//daniel

maior_abandonado

ow kra…valeu…eu vo testa aki e ja retorno…

maior_abandonado

kra eu peguei o jar do commons.io, só que na classe FileUtils, nao tem o metodo readLines…

de qualquer jeito, vai ser possivel passar uma url desta maneira? :frowning:

W

hummm estranho. O jar que vc adicionou no seu projeto eh algo to tipo commons-io-1.3.2.jar ???

Depois so dar esse import .

import org.apache.commons.io.*;

Acabei de rodar o meu programa. A documentacao da API tb tem esse metodo.

http://commons.apache.org/io/api-release/index.html?org/apache/commons/io/IOUtils.html

Vc dizer, ler um arquivo txt de uma URL ?

//Daniel

maior_abandonado

commons-io-1.0.jar… eu vo procura pro algum mais atualizado (bem lembrado, disculpa a burrice minha…rs)

em relação a url sim, eu to pegando o txt, que no caso é um log de uma impressora aqui interna, esse log é uma pagina html, que eu acesso pelo browser, e ponho num objeto url e jogo no buferedreader…

desse jeito que vc me passo eu nao conheço essa api, mais ao q me parece elabaixa o arquivo inteiro, eu to disconfiado que lendo no buferedreader é u pokinhu mais rapido pq só le até essa linha…

eu to kerendo certa velocidade, pq isso vai ser feito constantemente (tipo de 5 em 5 segundos por exemplo), para quando dar um erro na impressora, eu ja manda um socket pro pc de kem cuida dela com a string do erro e exibi-lo na base do joptionpane…

ai eu começo a ler como se fosse um txt em disco depois que eu tenho ele no buferedreader, mais esse txt nao é bem em disco…

eu me referi a linha 195, pq detectei q a ultimalinha do log esta sempre nessa linha da pagina html…

bom… obrigdo desde ja pela ajuda q vc me deu kra…vlwzão mesmo… :wink:

W

Eh, a ultima versao eh 1.4 ( http://commons.apache.org/io/ )

Sim eh verdade eu acho que desse jeito, readLines le todo o conteudo do arquivo e joga num List. Provavelmente desse jeito que vc falou eh mais rapido.

maior_abandonado

bom…obrigado assim mesmo…

no q eu tava testando, eu criei um metodo getLinha195, o chamei em um loop e dei um system.out…

a execução de 30 chamadas ao metodo foi em 50 segundos, tava demorando 1 segundo ou um pouco mais que isso enrte elas, eu tava com medo disso consumir mto recurso… por isso q eu tava querendo agiliza…

de qualquer jeito na base do ctrl alt e del, tanto consumo de cpu quanto de rede ficaram laaa embaixo…na dificuldade eu vo dexa assim mesmo…

kra…obrigadão…

Criado 28 de abril de 2008
Ultima resposta 28 de abr. de 2008
Respostas 7
Participantes 2