Eliminar uma linha em java

estou a usar arquivo,
dei muitas voltas so para eliminar uma linha conform o meu codigo,
alguem pode me sugerir fazer isso em menos passos
agradeco

try {
arquivo = “./src/Sistema/Clinica/Ficheiros/Funcionario.txt”;
ler = new FileReader(arquivo);
lerb = new BufferedReader(ler);
linha = lerb.readLine();

        while (linha != null) {
            String campos[] = linha.split(";");
            idpessoa = campos[0];
            fileWriter = new FileWriter("./src/Sistema/Clinica/Ficheiros/del.txt", true);
            escrever = new BufferedWriter(fileWriter);
            if (!idpessoa.equals(indice)) {
                escrever.write(linha);
                escrever.newLine();
            }
            escrever.close();
            fileWriter.close();
            linha = lerb.readLine();
        }

        //apagar dados
        File file = new File("./src/Sistema/Clinica/Ficheiros/Funcionario.txt");
        Writer arquivos = new FileWriter(file);

        arquivo = "./src/Sistema/Clinica/Ficheiros/del.txt";
        ler = new FileReader(arquivo);
        lerb = new BufferedReader(ler);
        linha = lerb.readLine();
        while (linha != null) {
            fileWriter = new FileWriter("./src/Sistema/Clinica/Ficheiros/Funcionario.txt", true);
            escrever = new BufferedWriter(fileWriter);
            escrever.write(linha);
            escrever.newLine();

            escrever.close();
            fileWriter.close();
            linha = lerb.readLine();
        }
         //apagar dados
        File fileq = new File("./src/Sistema/Clinica/Ficheiros/del.txt");
        Writer arquivosa = new FileWriter(fileq);

Está usando java 8 ou maior? Existe a classe Files.
Ela possui um método, o readAllLines que devolve uma lista de String, cada qual representando uma linha.
Isso pode te ajudar a resolver esse problema.

File arquivo = new File("./src/Sistema/Clinica/Ficheiros/Funcionario.txt");
List<String> todasAsLinhasLidas = Files.readAllLines(arquivo.toPath());
List<String> linhasParaGravar = new ArrayList<>();
for (String linha : todasAsLinhasLidas) {
    String campos[] = linha.split(";");
    String idPessoa = campos[0];
    if (!idPessoa.equals(indice)) {
        linhasParaGravar.add(linha);
    }
}
Files.write(arquivo.toPath(), linhasParaGravar);

estou a usar java7
mas obrigado pela ajuda.

Neste caso, crie dois métodos utilitários, um para ler as linhas, outro para gravar as linhas.

Método para ler as linhas do arquivo:

static List<String> readAllLines(File arquivo) throws IOException {
    List<String> linhas = new ArrayList<>();
    BufferedReader reader = new BufferedReader(new FileReader(arquivo));
    String linha = null;
    while ((linha = reader.readLine()) != null) {
        linhas.add(linha);
    }
    reader.close();
    return linhas;
}

Método para gravar as linhas no arquivo:

static void write(File arquivo, List<String> linhas) throws IOException {
    BufferedWriter writer = new BufferedWriter(new FileWriter(arquivo));
    for (String linha : linhas) {
        writer.write(linha);
        writer.newLine();
    }
    writer.flush();
    writer.close();
}

Código refatorado:

File arquivo = new File("./src/Sistema/Clinica/Ficheiros/Funcionario.txt");
List<String> todasAsLinhasLidas = readAllLines(arquivo);
List<String> linhasParaGravar = new ArrayList<>();
for (String linha : todasAsLinhasLidas) {
    String campos[] = linha.split(";");
    String idPessoa = campos[0];
    if (!idPessoa.equals(indice)) {
        linhasParaGravar.add(linha);
    }
}
write(arquivo, linhasParaGravar);