Java - exclui a linha do arquivo de texto sobrescrevendo enquanto o lê

Estou tentando excluir uma linha de texto de um arquivo de texto sem copiar para um arquivo temporário. Estou tentando fazer isso usando um Printwriter e um Scanner e fazendo com que eles percorram o arquivo ao mesmo tempo, o escritor escrevendo o que o Scanner lê e substituindo cada linha pela mesma coisa, até chegar à linha que eu gostaria de excluir. Avanço o scanner, mas não o escritor, e continuo como antes. Aqui está o código:

Mas primeiro, os parâmetros: Meus nomes de arquivos são números, então seria 1.txt ou 2.txt, etc, e então f especifica o nome do arquivo. Eu o converto em uma String no construtor de um arquivo. Int n é o índice da linha que quero excluir.

public void deleteLine(int f, int n){
 try{
 Scanner reader = new Scanner(new File(f+".txt")); 
 PrintWriter writer = new PrintWriter(new FileWriter(new File(f+".txt")),false); 
 for(int w=0; w<n; w++)
   writer.write(reader.nextLine()); 
 reader.nextLine(); 
 while(reader.hasNextLine())
   writer.write(reader.nextLine());
 } catch(Exception e){
   System.err.println("Enjoy the stack trace!");
   e.printStackTrace();
 }
}

Dá-me erros estranhos. Ele diz "NoSuchElementException" e "nenhuma linha encontrada" no rastreamento de pilha. Aponta para diferentes linhas; parece que qualquer uma das chamadas nextLine () pode fazer isso. É possível excluir uma linha dessa maneira? Se sim, o que estou fazendo de errado? Se não, por que? (BTW, no caso de você querer isso, o arquivo de texto tem cerca de 500 linhas. Não sei se isso conta como grande ou até importa.)

questionAnswers(3)

yourAnswerToTheQuestion