Apagar linhas de txt até determinada linha java

Seguinte, eu tenho um código java que é responsável por fazer o download de um arquivo texto e esse mesmo código fica responsável por ler esse arquivo, e ele funciona muito bem atualmente mas eu preciso fazer uma alteração, eu não quero ler o arquivo do inicio ao fim linha por linha como é feito atualmente …

Eu tenho o conteúdo de uma linha armazenado em uma variável, então eu quero apagar todas as linhas que vem antes dessa linha, exemplo:

linha1
linha2
linha3
linha4
linha5
linha6
linha7
linha8
linha9
linha10

String linhaDeterminada = “linha8”;

resultado desejado(quero apagar todo o restante):
linha9
linha10

pois é o que vem a seguir.

Alguém me ajuda por favor, desde já eu agradeço.

Nem sempre você vai ter respostas prontas.
Muitas vezes, precisa adaptar algo

sim, eu nunca utilizei fóruns para criar uma pergunta até hoje, eu incansavelmente testei diversas coisas diferentes, e infelizmente não consegui a solução, até que decidi criar uma conta aqui e compartilhar meu problema, talvez eu desse a sorte de encontrar alguém capaz de me ajudar

De acordo com o dicionário, sua ajuda já foi prestada.
Se olhar bem as respostas da thread sugerida, verá que é bastante óbvio.

Mas vc testou essa solução que o @darlan_machado passou ?
e o q aconteceu de errado?

Depender dos outros é ruim.
Curiosidade e saber utilizar motores de busca são habilidades importantes de um dev.

Há diversas formas de se resolver um determinado problema.

No seu caso se você tem uma palavra chave para marcar a linha.
Então você pode usar:
int inicioToken = txtBaixado.indexOf(txtChave);
Depois:
String txtEditado = txtBaixado.subString(inicioToken);

Se existe uma linha fixa, então o texto possui um padrão, então você pode usar o:

String[] linhas = txtBaixado.split("\n") e vai usar um for comum com i iniciando na linha_padrao - 1;
Dependendo do caso, pode usar um match, etc.

A mais prática é vc remover as linhas desnecessárias manualmente, pois arquivos sem padrão de formatação são horríveis para fins de manipulação.

Vc deve pesar qual a melhor solução para seu problema, no caso, a proposta por @darlan_machado é mais profissional, e melhor que isso só com SGBD.

Eu, particularmente, oriento que padronize o arquivo.txt pra não fazer esforço com algo que vai lhe dar dor de cabeça na frente, ou use SGBD.

Se não quiser o SGBD, pelo menos mapeia se .txt para JSON, vc pode pesquisar no google sobre o JSON.

1 curtida

Obrigado a todos que usaram um tempo aqui para me ajudar, o problema já foi solucionando, um gringo me enviou um método que faz o que eu precisava e eu adaptei no meu projeto.

public class Main {

public static void main(String[] args) {
    try {
        Scanner s = new Scanner(new File("input.txt"));
        skipLines(s, 3);//skip 3 lines of input.txt file
        //read the rest of the file
        while (s.hasNextLine()) {
            String line = s.nextLine();
            // use lines here
            System.out.println(line);
        }
    }catch (Exception e){
    }
}

public static void skipLines(Scanner s,int lineNum){
    for(int i = 0; i < lineNum;i++){
        if(s.hasNextLine())s.nextLine();
    }
}

}