Última linha do arquivo texto

7 respostas
J

Olá amigos,
estou lendo um arquivo texto para fazer uma carga em banco, é possível ler apenas a última linha do arquivo sem ter que varre-lo por completo ?

Um abraço

7 Respostas

Luca

Olá

Seu problema pode ficar mais simples se você der mais alguns detalhes:
a) Os registros são de tamanho fixo? (Todas as linhas do mesmo comprimento)

b) As linhas possuem um separador tipo vírgula e tém CRLF?

[]s
Luca

J

Os campos são separados por vírgulas.
O arquivo tem o seguinte formato:

00000000000000000000000
123;456;AAA;BBB;CCC
123;456;AAA;BBB;CCC
123;456;AAA;BBB;CCC
0000003AAAAAAAAAAAAAA

Eu preciso pegar o valor total de registros da última linha, mas não queria varrê-lo todo por que ele pode chegar a ter 3000000 de registros.

Luca

Olá

Isto é uma linha? Todas as linhas tem o mesmo tamanho? Se for assim fica bem mais fácil.

[]s
Luca

J

A primeira e ultima linha eu pego através de posicional.
As outras estou utilizando o metodo split para pegar através do delimitador “;”
O tamanho da primeira e utima linha é diferente das outras.

Luca

Olá

O importante é saber se vc pode usar:
public long skip(long n)
          throws IOExceptionSkip characters. This method will block until some characters are available, an I/O error occurs, or the end of the stream is reached. 

Parameters:
n - The number of characters to skip 
Returns:
The number of characters actually skipped 
Throws: 
IllegalArgumentException - If n is negative. 
IOException - If an I/O error occurs
Este é um método da classe Reader que serve quando se conhece o tamanho do arquivo (File.length()) e o tamanho de cada registro em bytes.
java.io 
Class Reader
java.lang.Object
  java.io.Reader
Direct Known Subclasses: 
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader

Acho que é isto, fiz uns Copys&Pastes da API do Java sem poder pensar muito.

[]s
Luca

J

Entendi, só que como o número de caracteres na linha pode variar eu não teria como usar o skip.

Mesmo assim valeu mesmo, muito obrigado.

Luca

Olá

Mas você mesmo disse que seus registros repetem o padrão
00000000000000000000000
123;456;AAA;BBB;CCC
123;456;AAA;BBB;CCC
123;456;AAA;BBB;CCC
0000003AAAAAAAAAAAAAA

Então qual dificuldade de buscar o último grupo destas 5 linhas?

[]s
Luca

Criado 13 de junho de 2004
Ultima resposta 15 de jun. de 2004
Respostas 7
Participantes 2