Olá!

Para ler um arquivo texto apartir de um ponto utilize o RandomAccessFile, esta classe possui o método seek() que permite posicionar o cursor em um determinado ponto do arquivo antes de começar a leitura linha-a-linha.
No exemplo abaixo, o método gerarArquivoGigante() cria um arquivo de 96MB e o método main() lê apenas os últimos 521KB desse arquivo.

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;

public class LeitorArquivo {

public static void main(String[] args) {
// Inicia a leitura do arquivo
File file = new File(“D:\\ArquivoGigante.txt”);

try {
// Abre o arquivo em modo de leitura apenas
RandomAccessFile raf = new RandomAccessFile(file, “r”);
String linha = null;

// Lê apenas os 512KB do final do arquivo
raf.seek(raf.length() – 1024 * 512);

while ((linha = raf.readLine()) != null) {
// Mostra as linhas no console
System.out.println(linha);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

/*
* Gera um arquivo gigante (96,3MB)
*/
public static void gerarArquivoGigante() {
File file = new File(“D:\\ArquivoGigante.txt”);
try {
FileOutputStream fos = new FileOutputStream(file);
String linha = “ABCDEFGHACMNSHTYUEILOKJHSNMALOQPLOASGTEBH” +
“YNSDFGJMKLAKSJDQOEWIAAANNSJS”
+”JHGQYAUSKDOEPPKLKJHHGFQWERTYUJ”
+ System.getProperty(“line.separator”);
for (int idx = 0; idx < 1000000; idx++) fos.write(linha.getBytes()); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } [/sourcecode]

Share


Deixe um comentário