Diferença de Java entre FileWriter e BufferedWriter

Qual a diferença entre esses? Eu só estou aprendendo Java ATM, mas parece que eu posso escrever em um arquivo de ambas as formas, ou seja, (eu não copiei o bloco try-catch aqui).

FileWriter file = new FileWriter("foo.txt");
file.write("foobar");
file.close();

e

FileWriter file = new FileWriter("foo.txt");
BufferedWriter bf = new BufferedWriter(file);
bf.write("foobar");
bf.close();

Eu entendo o conceito de buffering dos dados primeiro, então isso significa que o primeiro exemplo grava os caracteres um por um e o segundo primeiro armazena-o na memória e o grava uma vez?

questionAnswers(6)

yourAnswerToTheQuestion