Ler conteúdo de um Arquivo, colocar mais conteúdo e gravar o mesmo arquivo com mais conteúdo


        for(String s : arquivosList) {
            System.out.println(s);// imprime o nome do arquivo atual
            // aqui o programa le os arquivos o teste e o que vai se substituido
    
            FileInputStream stream = null;
            try {
                stream = new FileInputStream(s);
            } catch (FileNotFoundException f) {
                f.printStackTrace();
            }
            InputStreamReader streamReader = new InputStreamReader(stream);
            BufferedReader reader = new BufferedReader(streamReader);
    
            FileWriter fileWriter = null;
            try {
                fileWriter = new FileWriter(s);
            } catch (IOException f) {
                f.printStackTrace();
            }
            PrintWriter writer = new PrintWriter(fileWriter);
    
            // Neste while lemos o arquivo linha a linha
            String line = null;
    
            // fechando os objetos de io:
            try {
                while( (line=reader.readLine() ) != null ) {
    
            // aqui copia linha antiga para novo arquivo
                writer.println(line);
            //  aqui gera uma nova linha com novo conteúdo
                writer.println("novo conteúdo");    
            }
            } catch (IOException f) {
                f.printStackTrace();
            }
            writer.close();
            try {
                fileWriter.close();
                reader.close();
                streamReader.close();
                stream.close();
    
            } catch (IOException f) {
                f.printStackTrace();
            }
    
        }
        System.out.printf(Arquivo.gerarLixo());
    }

Tenho um problema não estou conseguindo adicionar conteúdo no arquivo e depois salvá-lo.
Tenho uma lista de arquivos que seriam adicionados conteúdo e seria acrescentado alternando em cada linha um novo conteúdo.
O problema é que todos os arquivos estão sendo gravados com conteúdo vazio.

Antes de chamar o writer.close(), faltou invocar o método writer.flush();

Acabei de invocar o método e o arquivo gerado ainda está em branco.

    private void btnCompilar_actionPerformed(ActionEvent e) {
        for(String s : arquivosList) {  
            System.out.println(s);// imprime o nome do arquivo atual  
            
            FileInputStream stream = null;  
            BufferedReader reader = null;
            FileWriter fileWriter = null;  
            String line = "";
            
            try {  
                stream = new FileInputStream(s);  
                reader = new BufferedReader(new FileReader(s));
                fileWriter = new FileWriter(new File(s));  
                   
            } catch (Exception f) {  
                f.printStackTrace();  
            }
            
            PrintWriter writer = new PrintWriter(fileWriter);           
                
               try {  
                   // Neste while lemos o arquivo linha a linha    
                    while((line=reader.readLine() ) != null) {  
                   
                        // aqui copia linha antiga para novo arquivo  
                        writer.println(line);  
                        System.out.println(line);     
                        //  aqui gera uma nova linha com novo conteúdo  
                        writer.println("novo conteúdo");
                        writer.write("algo");
                        writer.flush(); 
                        fileWriter.close();  
                        reader.close();  
                        stream.close();  
                        writer.close();  
                           
                    } // fim do while  
               } catch (IOException f) {  
                   f.printStackTrace();  
               }   
           }  // fim do for
    }

Dei uma limpada no código mas ainda gera arquivos vazio.

Nesta parte do código descobri que a variável line é sempre null
mas ainda não consegui resolver