Código só escreve no arquivo .txt se colocar o bw.flush();
Código só escreve no arquivo .txt se colocar o bw.flush();
Oi Jackson, tudo bom?
Você também pode utilizar o PrintStream, se estiver com problemas com o BufferedWritter:
        public static void main(String[] args) throws IOException {
            Scanner entrada = new Scanner(new FileInputStream("arquivo.txt"));
            PrintStream saida = new PrintStream(new FileOutputStream("copia.txt"));
            while (entrada.hasNextLine()) {
                saida.println(entrada.nextLine());
            }
            saida.close();
            entrada.close();
        }
Mas, estranho você ter problemas com o flush, já que o método write já realiza o flush por baixo dos panos.
O que ocorre se você não utilizar o flush?
Compartilha com a gente aqu seu código que fica mais facil de discutir o problema.
Abraço.
package Alura3;
import java.io.*;
import java.util.Scanner;
public class EntradaDeUmArquivo {
    public static void main(String[] args) throws IOException {
        InputStream is = System.in;
        Scanner entrada = new Scanner(is);
        OutputStream os = new FileOutputStream("saida.txt");
        OutputStreamWriter osw = new OutputStreamWriter(os);
        BufferedWriter bw = new BufferedWriter(osw);
        System.out.println("Digite sua mensagem:");
        while (entrada.hasNextLine()) {
            String linha = entrada.nextLine();
            bw.write(linha);
            bw.newLine();
            bw.flush();
        }
        entrada.close();
    }
}
        Acredito que o problema seja a ordem das coisas. O método newLine cria uma nova linha, mas diferente do write não chama o flush automaticamente. Se você escrever o newLine antes do write acredito que funcione:
    while (entrada.hasNextLine()) {
            String linha = entrada.nextLine();
            bw.newLine();
            bw.write(linha);
        }
entrada.close();
Uma alternativa é concatenar a quebra de linha no proprio write:
            bw.write(linha."\n");
Assim, não precisamos nem da chamada do newLine() nem do flush =)
Boa André!!!