Não escrever última linha vazia arquivo de saída

Pessoal bom dia, tenho uma classe que lê um arquivo .txt e escreve em outro .txt as alterações que preciso, só que acontece o seguinte:

ao final do arquivo está ficando uma linha vazia pois estou usando o write.newLine(); no meu for():

for (String linha : linhas) {
				
				if(linha.substring(0, 3).equals("XXX")){
                    //Aqui faço as alterações e atualizo a linha "corrente" pra depois gravar
					w.write(linha);
					w.newLine();
					
				}
				w.flush();
			}

Estou usando a lib commons-io-1.4.

Alguma sugestão?

OBS: Essa linha vazia gera um erro na hora que vou importar esse TXT pra um sistema, ai eu tenho que manualmente apagar esse maledita linha.

Por que não inverte a ordem?

for (String linha : linhas) {  
                  
                if(linha.substring(0, 3).equals("XXX")){  
                    //Aqui faço as alterações e atualizo a linha "corrente" pra depois gravar 
//Cria uma nova linha antes de inserir conteúdo...
                    w.newLine();   
                    w.write(linha);  
                      
                }  
                w.flush();  
            } 

Pq vai pular no início;

Verdade.
Mas, neste caso, não precisa do newLine()… Já que o write funciona.

xovê…

so que o write nao faz a quebra de linha…
eu ja pensei em jogar as linhas !vazia pra um array e depois escrever … sei la… ou so dar o write e o newLine de acordo como numero de linhas do arquivo.

Caso seja a primeira linha escreva a string normalmente, caso seja as outras, escreva a string com um \n antes.
Daí vai ficar algo assim:
linha\nlinha\nlinha\nlinha

Não sei se é o jeito mais ideal pra isso, mas creio que funcione.