Leitura de Arquivo

Pessoal como posso ler uma linha especifica do arquivo, ou ler o arquivo de uma linha em diante?

Você está mencionando um arquivo-texto (aqueles que se abrem com FileReader), não?

Se for isso, então para ir para a linha X, você precisa ler todas as linhas anteriores e ir jogando fora. É meio estúpido mas é assim mesmo.

Se você olhar o fonte de um editor de texto ingênuo como o Notepad (Bloco de Notas) do Windows, vai ver que ele carrega o arquivo inteiro na memória, como se ele fizesse em C (a linguagem em que foi escrito) o equivalente do Java a List<String>. E é por isso que o Ctrl+G (comando que permite posicionar em uma determinada linha do arquivo) funciona, já que ele já tem um array prontinho, e os comandos para inserir e remover linhas funcionam - basta inserir ou remover elementos no List<String>, e no fim das contas (quando você pede para salvar) ele tem de descarregar todas as linhas que estavam na memória para o disco.

Editores de texto mais complexos, que podem carregar arquivos maiores, usam esquemas bem complexos para não precisar carregar todas as linhas na memória, e poder inserir ou remover linhas.

Como thingol disse não é possivel ler uma determinada linha, sem ler o arquivo inteiro, mas como fonte informação extra e possivel marcar a linha atual é ate mesmo capturar a linha atual com a classe LineNumberReader http://java.sun.com/javase/6/docs/api/java/io/LineNumberReader.html

Caro amigo,
Também sou iniciante no Java, mas fiz esta receita de bolo para ler arquivo usando a classe Scanner.


O primeiro passo é criar um objeto Scanner com parâmetro o objeto File:

Scanner arquivo = new Scanner (new File ("arquivo.txt"));


Agora utilizo uma estrutura de controle, a fim de controlar o número de linhas do arquivo e parar quando não houver mais nenhuma linha.

while (arquivo.hasNextLine()){

A partir deste momento tenho três alternativas para a leitura dos dados contidos na linha:

[i]
1ª -. Usando a leitura dos dados separados por espaço em branco:
[/i]

[code]
Scanner funcionario = new Scanner (arq.nextLine());

String nome = funcionario.next();
int numero = funcionario.nextInt();
double salario = funcionario.nextDouble();[/code]
[i]
2ª -. Usando a leitura dos dados separados por caractere ou palavra, com userDelimiter:
[/i]

[code]
String linha = arquivo.nextLine();

Scanner funcionario = new Scanner (linha);

funcionario.useDelimiter(";");
String nome = funcionario.next();
int numero = funcionario.nextInt();
double salario = funcionario.nextDouble();[/code]
[i]
3ª -. Usando a leitura dos dados separados por caractere ou palavra, com Split:
[/i]

[code]
String linha = arquivo.nextLine();

String []funcionario = linha.split(";");

String nome = funcionario [0];
int numero = Integer.parseInt(funcionario [1]);
double Salario = Double.parseDouble(funcionario [2]);[/code]

Espero que ajude