Criação de arquivo txt com utf 8

Olá, peguei um texto na net, mas a formatação dele estava toda errada. Linhas que não deveriam sem puladas foram etc. Criei um código então para juntar tds essas linhas, o texto está em português, ou seja, tem pontos, vírgulas, dois pontos, acentos etc. O problema é esse, no texto de leitura o txt está td certo, depois de escrever, o txt gerado não obedece o padrão. Acredito q seja por causa da codificação dele, que não esta no UTF-8. Vocês poderiam me dar um help? Vlw!
Código:

import java.io.*;

public class Livro {

    public static void main(String[] args) throws IOException {

        //List<String> list = new ArrayList<String>();//
        String texto = "";

        try (BufferedReader br = new BufferedReader(new FileReader("C:/Users/Andre-PC/Documents/livro_sem_correcao.txt"))) {

            String sCurrentLine;

            while ((sCurrentLine = br.readLine()) != null) {
                texto = texto + sCurrentLine;
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        /* for (String temp : list) {
            System.out.println(temp);
        }*/
        File file = new File("C:/Users/Andre-PC/Documents/livro_correcao.txt");

        // if file doesnt exists, then create it
        if (!file.exists()) {
            file.createNewFile();
        }

        FileWriter fw = new FileWriter(file.getAbsoluteFile());
        BufferedWriter bw = new BufferedWriter(fw);

        bw.write(texto);
        bw.close();
        System.out.println("Done");
    }
}